c# 链接mongDB集群实战开发3
2014-05-13 13:17
711 查看
c#链接mongDB集群
一
了解mongdb
二
部署集群
三
C#链接mongdb完成测试
C#链接mongdb完成测试
此章节继续我们上一章节将的我们开始用程序去链接mondbdb,大家都知道我们链接sqlserver其实用的是微软自己写的驱动。它已经封装了一些对象,要我们去链接。但是我们链接mondbdb同样需要一些对象,这个mongdb官网有说明,可以自己去看看或者直接下载我的这里下载或者在第一章节有些伙伴们已经下载好了
开发驱动文件夹在mongo-csharp-driver-master\mongo-csharp-driver-master\srcSRC下面看到驱动项目这里注意,我下载是vs2012的项目,同学们可以根据自己的需要替换netframework版本
打开项目之后看到如图所示
编译项目得到
MongoDB.Bson.dll
MongoDB.Driver.dll
创建项目,项目配置文件如下
LogLevel为自定义日记级别,这个后面看我的代码
LogPath为日志路径
MongReplicaSetName为副本集名称,其实就是建立集群的时候取的名字。
MongoServerAddress为集群机器ip列表,我这里是自己的机器开了不同的端口来区别,你可以改成局域网ip
TimeOut超时时间,默认貌似是3秒,我这里设置60秒方便调试
链接集群主要代码
set.ReadPreference=newReadPreference(ReadPreferenceMode.SecondaryPreferred);这句代码可以根据自己需要修改。
其他没有什么注意的地方
数据插入mongdb代码
读取mongdb数据代码
以上是插入和读取代码。
后面运行效果如下
我这里插入了10w条数据人然后读取10w条数据。效率比sqlserver是快很多。
源码在这里提供下载
http://download.csdn.net/detail/zuoming120/7339897
一
了解mongdb
二
部署集群
三
C#链接mongdb完成测试
C#链接mongdb完成测试
此章节继续我们上一章节将的我们开始用程序去链接mondbdb,大家都知道我们链接sqlserver其实用的是微软自己写的驱动。它已经封装了一些对象,要我们去链接。但是我们链接mondbdb同样需要一些对象,这个mongdb官网有说明,可以自己去看看或者直接下载我的
开发驱动文件夹在mongo-csharp-driver-master\mongo-csharp-driver-master\srcSRC下面看到驱动项目这里注意,我下载是vs2012的项目,同学们可以根据自己的需要替换netframework版本
打开项目之后看到如图所示
编译项目得到
MongoDB.Bson.dll
MongoDB.Driver.dll
创建项目,项目配置文件如下
<?xmlversion="1.0"encoding="utf-8"?> <configuration> <startup> <supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5"/> </startup> <appSettings> <addkey="LogLevel"value="trace"/> <addkey="LogPath"value="E:\Tools\mongdb\FrmMongDB\FrmMongDB\logs"/> <!--MongDb配置begin--> <addkey="MongReplicaSetName"value="zuomm"/><!--设置副本集名称--> <addkey="MongoServerAddress"value="127.0.0.1:1111|127.0.0.1:2222|127.0.0.1:3333"/><!--mongdb集群列表--> <addkey="TimeOut"value="60"/><!--mongdb集群链接超时时间--> <!--MongDb配置end--> </appSettings> </configuration>
LogLevel为自定义日记级别,这个后面看我的代码
LogPath为日志路径
MongReplicaSetName为副本集名称,其实就是建立集群的时候取的名字。
MongoServerAddress为集群机器ip列表,我这里是自己的机器开了不同的端口来区别,你可以改成局域网ip
TimeOut超时时间,默认貌似是3秒,我这里设置60秒方便调试
链接集群主要代码
///<summary>
///取得数据库连接字符串
///</summary>
///<paramname="connName">App.Config文件中AppSettings节中AppSettings对应的name</param>
///<returns>数据库连接字符串</returns>
privatestaticMongoServerGetConnStr()
{
List<MongoServerAddress>servers=newList<MongoServerAddress>();
stringreg=@"^(?'server'\d{1,}.\d{1,}.\d{1,}.\d{1,}):(?'port'\d{1,})$";
string[]ServerList=ConfigurationManager.AppSettings["MongoServerAddress"].Trim().Split('|');
foreach(stringserverinServerList)
{
MatchCollectionmc=Regex.Matches(server,reg);
if(mc!=null&&mc.Count>0)
servers.Add(newMongoServerAddress(mc[0].Groups["server"].ToString(),Convert.ToInt32(mc[0].Groups["port"].ToString())));
}
if(servers==null||servers.Count<1)
returnnull;
MongoClientSettingsset=newMongoClientSettings();
set.Servers=servers;
set.ReplicaSetName=ConfigurationManager.AppSettings["MongReplicaSetName"].Trim();//设置副本集名称
intTimeOut=ConvertUtil.ParseInt(ConfigurationManager.AppSettings["TimeOut"].Trim());//设置副本集名称
set.ConnectTimeout=newTimeSpan(0,0,0,TimeOut,0);//设置超时时间为5秒
set.ReadPreference=newReadPreference(ReadPreferenceMode.SecondaryPreferred);
MongoClientclient=newMongoClient(set);
returnclient.GetServer();
}
set.ReadPreference=newReadPreference(ReadPreferenceMode.SecondaryPreferred);这句代码可以根据自己需要修改。
其他没有什么注意的地方
数据插入mongdb代码
///<summary>
///MongDB批量insert语句
///</summary>
///<typeparamname="T">对象类型</typeparam>
///<paramname="_databaseName">数据库名称</param>
///<paramname="_collectionName">表名称</param>
///<paramname="entitys">对象</param>
///<paramname="errorMsg">返回错误</param>
///<returns></returns>
publicstaticIEnumerable<SafeModeResult>Execute<T>(string_databaseName,string_collectionName,IEnumerable<T>entitys,outstringerrorMsg)
{
errorMsg=string.Empty;
//取得数据库连接
IEnumerable<SafeModeResult>result=null;
try
{
if(null==entitys)
returnnull;
//获取连接的服务器集群
_server=GetConnStr();
//获取数据库或者创建数据库(不存在的话)。
MongoDatabasedatabase=_server.GetDatabase(_databaseName);
using(_server.RequestStart(database))//开始连接数据库。
{
MongoCollection<T>myCollection=database.GetCollection<T>(_collectionName);
result=myCollection.InsertBatch<T>(entitys);
}
}
catch(Exceptionex)
{
errorMsg=ex.ToString();
}
finally
{
}
//记录日志
if(!string.IsNullOrEmpty(errorMsg))
{
LogUtil.Error("CommonLib.DbAccess.MongDBAccess","Execute",errorMsg+"\n\r\t");
}
returnresult;
}
读取mongdb数据代码
///<summary>
///如果不清楚具体的数量,一般不要用这个函数。
///</summary>
///<typeparamname="T"></typeparam>
///<paramname="collectionName"></param>
///<returns></returns>
publicstaticList<T>GetAll<T>(string_databaseName,stringcollectionName,outstringerrorMsg)
{
errorMsg=string.Empty;
List<T>result=newList<T>();
try
{
//获取连接的服务器集群
_server=GetConnStr();
//获取数据库或者创建数据库(不存在的话)。
MongoDatabasedatabase=_server.GetDatabase(_databaseName);
using(_server.RequestStart(database))//开始连接数据库。
{
MongoCollection<T>myCollection=database.GetCollection<T>(collectionName);
result.AddRange(myCollection.FindAll());
}
}
catch(Exceptionex)
{
errorMsg=ex.ToString();
}
//记录日志
if(!string.IsNullOrEmpty(errorMsg))
{
LogUtil.Error("CommonLib.DbAccess.MongDBAccess","GetAll",errorMsg+"\n\r\t");
}
returnresult;
}
以上是插入和读取代码。
后面运行效果如下
我这里插入了10w条数据人然后读取10w条数据。效率比sqlserver是快很多。
源码在这里提供下载
相关文章推荐
- c# 链接mongDB集群实战开发2
- c# 链接mongDB集群实战开发
- C#开发Windows mobile 应用程序链接网络。
- 【原创】ASP.NET Web 应用开发实战快速上手系列 1——配置环境及预备知识(框架、VS、C#)
- C#开发实战1200例(第二卷)自学第一章,鼠标操作控制
- 深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)
- C#开发实战视频教程_基于多线程C#开发QQ农场
- [转]LibreOffice-SDK 开发实战:嵌入MFC-View 和 C# Winform
- Xamarin iOS开发实战中册 (内部资料)C#苹果应用开发
- Visual Studio 跨平台开发实战--- Hello Xamarin! [Visual Studio + C# + Xamarin = iOS/Android/Windows Apps ]
- 用VS2008打开链接数据库sql server2005异常,用于开发移动终端 C#
- 亮剑.NET. 图解C#开发实战 在线阅读
- JAVA架构师课程(大数据,分布式事物解决方案,大型互联网项目,大型金融项目,高并发集群解决方案)实战开发[技术 activeMQ,zookeeper,http,支付,团购,dubbox,stom]
- Unity5实战使用C#和Unity开发多平台游戏pdf
- Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序
- C# Xamarin移动开发项目实战篇
- 分享:我用C#开发了一个分布式可开发的开放式云平台,能把几万台电脑做成一个集群
- C#实现微信跳一跳小游戏的自动跳跃助手开发实战
- [转载] C#开发实战1200例(第I卷)目录
- J2EE集群开发部署实战