• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

c#链接mongDB集群实战开发3

mysql 搞代码 4年前 (2022-01-09) 9次浏览 已收录 0个评论

c# 链接mongDB集群 一 了解mongdb 二 部署集群 三 C#链接mongdb 完成测试 C#链接mongdb 完成测试 此章节继续我们上一章节将的我们开始用程序去链接mondbdb,大家都知道我们链接sqlserver其实用的是微软自己写的驱动。它已经封装了一些对象,要我们去链接。但

c# 链接mongDB集群

一 了解mongdb

二 部署集群

三 C#链接mongdb 完成测试

C#链接mongdb 完成测试

此章节继续我们上一章节将的我们开始用程序去链接mondbdb,大家都知道我们链接sqlserver其实用的是微软自己写的驱动。它已经封装了一些对象,要我们去链接。但是我们链接mondbdb 同样需要一些对象,这个mongdb官网有说明,可以自己去看看或者直接下载我的这里下载 或者在第一章节有些伙伴们已经下载好了

开发驱动文件夹 在 mongo-csharp-driver-master\mongo-csharp-driver-master\src SRC下面看到驱动项目这里注意,我下载是vs2012的项目,同学们可以根据自己的需要替换net framework 版本

打开项目之后看到 如图所示

编译项目得到

MongoDB.Bson.dll

MongoDB.Driver.dll

创建项目,项目配置文件如下

<?xml version="1.0" encoding="utf-8" ?>                                   <!---ecms -ecms MongDb配置begin-->    <!---ecms -ecms 设置副本集名称-->    <!---ecms -ecms mongdb集群列表-->    <!---ecms -ecms mongdb集群链接超时时间-->    <!---ecms -ecms MongDb配置end-->  

LogLevel 为自定义 日记级别 ,这个后面看我的代码

LogPath 为日志路径

MongReplicaSetName 为副本集名称,其实就是建立集群的时候取的名字。

MongoServerAddress 为集群机器ip列表,我这里是自己的机器开了不同的端口来区别,你可以改成局域网ip

TimeOut 超时时间,默认貌似是3秒,我这里设置60秒方便调试

链接集群主要代码

 /// <summary>        /// 取得数据库连接字符串        /// </summary>        /// App.Config文件中AppSettings节中 AppSettings 对应的name        /// 数据库连接字符串        private static MongoServer GetConnStr()        {            List servers = new List();            string reg = @"^(?'server'\d{1,}.\d{1,}.\d{1,}.\d{1,}):(?'port'\d{1,})$";            string[] ServerList = ConfigurationManager.AppSettings["MongoServerAddress"].Trim().Split('|');            foreach (string server in ServerList)            {                MatchCollection mc = Regex.Matches(server, reg);                if (mc != null && mc.Count > 0)                    servers.Add(new MongoServerAddress(mc[0].Groups["server"].ToString(), Convert.ToInt32(mc[0].Groups["port"].ToString())));            }            if (servers == null || servers.Count < 1)                return null;            MongoClientSettings set = new MongoClientSettings();            set.Servers = servers;            set.ReplicaSetName = ConfigurationManager.AppSettings["MongReplicaSetName"].Trim();//设置副本集名称            int TimeOut =ConvertUtil.ParseInt(ConfigurationManager.AppSettings["TimeOut"].Trim());//设置副本集名称            set.ConnectTimeout = new TimeSpan(0, 0, 0, TimeOut, 0);//设置超时时间为5秒            set.ReadPreference = new ReadPreference(ReadPreferenceMode.SecondaryPreferred);            MongoClient client = new MongoClient(set);            return client.GetServer();        }set.ReadPreference = new ReadPreference(ReadPreferenceMode.SecondaryPreferred); 这句代码可以根据自己需要修改。

其他没有什么注意的地方

数据插入mongdb代码

    /// <summary>        /// MongDB 批量insert语句        /// </summary>        /// 对象类型        /// 数据库名称        /// 表名称        /// 对象        /// 返回错误        ///         public static IEnumerable Execute(string _databaseName, string _collectionName, IEnumerable entitys, out string errorMsg)        {            errorMsg = string.Empty;            //取得数据库连接            IEnumerable result = null;            try            {                if (null == entitys)                    return null;                //获取连接的服务器集群                _server = GetConnStr();                //获取数据库或者创建数据库(不存在的话)。                MongoDatabase database = _server.GetDatabase(_databaseName);                using (_server.RequestStart(database))//开始连接数据库。                {                    MongoCollection myCollection = database.GetCollection(_collectionName);                    result = myCollection.InsertBatch(entitys);                }            }            catch (Exception ex)            {                errorMsg = ex.ToString();            }            finally            {            }            //记录日志            if (!string.IsNullOrEmpty(errorMsg))            {                LogUtil.Error("CommonLib.DbAccess.MongDBAccess", "Execute", errorMsg + "\n\r\t");            }            return result;        }

读取mongdb数据代码

/// <summary>        /// 如果不清楚具体的数量,一般不要用这个函数。        /// </summary>        ///         ///         ///         public static List GetAll(string _databaseName, string collectionName,out string errorMsg)        {            errorMsg = string.Empty;            List result = new List();            try            {                //获取连接的服务器集群                _server = GetConnStr();                //获取数据库或者创建数据库(不存在的话)。                MongoDatabase database = _server.GetDatabase(_databaseName);                        <a>本文来源gao($daima.com搞@代@#码8网^</a>       using (_server.RequestStart(database))//开始连接数据库。                {                    MongoCollection myCollection = database.GetCollection(collectionName);                    result.AddRange(myCollection.FindAll());                }            }            catch (Exception ex )            {                errorMsg = ex.ToString();            }            //记录日志            if (!string.IsNullOrEmpty(errorMsg))            {                LogUtil.Error("CommonLib.DbAccess.MongDBAccess", "GetAll", errorMsg + "\n\r\t");            }            return result;        } 

以上是插入和读取代码。

后面运行效果如下

我这里插入了10w条数据 人然后读取10w条数据。效率比sqlserver是快很多。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:c#链接mongDB集群实战开发3
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址