MongoDB最新驱动解析
来源:互联网 发布:java时间格式化到毫秒 编辑:程序博客网 时间:2024/05/23 18:31
.Net的mongodb驱动最新的官方驱动为1.6.1,本文采用的是最新驱动。
mongodb官方驱动从1.4开始就已经内置了Linq,因此从1.4开始已经不需要使用FluentMongo来扩展mongodb的Linq查询了。
一、mongodb的部署主要有以下三种方式:
1. 单点单机(Standalone):官方不推荐在Production上使用Standalone部署方式,当mongodb出现问题,crash时不能提供mongodb服务,导致数据丢失等问题。
2. Replica Sets(Master/Slave):三台独立的服务器部署mongodb。采用Relica Sets的好处主要可以缓解读的压力,并对数据提供热备份(“增量备份”),当某台mongodb出现宕机的情况,mongodb集群会自动下线宕机mongodb,继续提供mongodb服务。
3. Sharding:三台独立的服务器部署mongodb。Sharding在高并发的情况下,主要解决mongodb写入的问题,对于有大量写入需要的应用来说,采用Sharding能够较好的缓解mongodb写入的压力。
二、mongodb连接
根据以上的三种不同的方式,连接字符串也有相应的变化
mongodb驱动提供了MongoUrlBuilder类来快速构建连接字符串
1.单机示例代码
MongoUrlBuilder url = new MongoUrlBuilder();
url.ConnectionMode = MongoDB.Driver.ConnectionMode.Direct;
url.SafeMode = SafeMode.True;
url.Server = MongoServerAddress.Parse("localhost");
2.Replica Sets示例代码
MongoUrlBuilder url = new MongoUrlBuilder();
url.ConnectionMode = MongoDB.Driver.ConnectionMode.ReplicaSet;
url.DatabaseName = "test";
url.ReplicaSetName = "rs0";
url.SafeMode = SafeMode.True;
url.Servers = new List<MongoServerAddress>() { MongoServerAddress.Parse("test-01"), MongoServerAddress.Parse("test-02"), MongoServerAddress.Parse("test-03") };
3.获取MongoDatabase对象
var db = MongoDatabase.Create(url.ToMongoUrl());
4.获取MongoCollection对象
var collection = db.GetCollection("foo");
注:Replica Sets的状态下只能使用主机名来连接,使用IP地址可能会失败,因为部署Replica Sets的时候是采用主机名指定的,因此采用IP连接会失败。
三、CRUD
MongoCollection对象Insert,InsertBatch,Find,Update,Remove方法来完成CRUD操作
1.Insert
collection.Insert<Person>(model, SafeMode.True);
2.Find
collection.Find(Query.EQ("name", "jack"));
3.Update
collection.Update(Query.EQ("name", "jack"), Update.Set("Age", 20), SafeMode.True);
4.Remove
collection.Remove(Query.EQ("name", "jack"), SafeMode.True);
四、关于mongodb的查询
1. 建立索引是必须的,10gen公司建议所有查询尽可能建立在索引字段,利用索引提高查询效率,尽量避免表扫描
2. 根据查询的不同需要调整索引的顺序,因为不同的查询,利用索引的方式不同
mongodb官方驱动从1.4开始就已经内置了Linq,因此从1.4开始已经不需要使用FluentMongo来扩展mongodb的Linq查询了。
一、mongodb的部署主要有以下三种方式:
1. 单点单机(Standalone):官方不推荐在Production上使用Standalone部署方式,当mongodb出现问题,crash时不能提供mongodb服务,导致数据丢失等问题。
2. Replica Sets(Master/Slave):三台独立的服务器部署mongodb。采用Relica Sets的好处主要可以缓解读的压力,并对数据提供热备份(“增量备份”),当某台mongodb出现宕机的情况,mongodb集群会自动下线宕机mongodb,继续提供mongodb服务。
3. Sharding:三台独立的服务器部署mongodb。Sharding在高并发的情况下,主要解决mongodb写入的问题,对于有大量写入需要的应用来说,采用Sharding能够较好的缓解mongodb写入的压力。
二、mongodb连接
根据以上的三种不同的方式,连接字符串也有相应的变化
mongodb驱动提供了MongoUrlBuilder类来快速构建连接字符串
1.单机示例代码
MongoUrlBuilder url = new MongoUrlBuilder();
url.ConnectionMode = MongoDB.Driver.ConnectionMode.Direct;
url.SafeMode = SafeMode.True;
url.Server = MongoServerAddress.Parse("localhost");
2.Replica Sets示例代码
MongoUrlBuilder url = new MongoUrlBuilder();
url.ConnectionMode = MongoDB.Driver.ConnectionMode.ReplicaSet;
url.DatabaseName = "test";
url.ReplicaSetName = "rs0";
url.SafeMode = SafeMode.True;
url.Servers = new List<MongoServerAddress>() { MongoServerAddress.Parse("test-01"), MongoServerAddress.Parse("test-02"), MongoServerAddress.Parse("test-03") };
3.获取MongoDatabase对象
var db = MongoDatabase.Create(url.ToMongoUrl());
4.获取MongoCollection对象
var collection = db.GetCollection("foo");
注:Replica Sets的状态下只能使用主机名来连接,使用IP地址可能会失败,因为部署Replica Sets的时候是采用主机名指定的,因此采用IP连接会失败。
三、CRUD
MongoCollection对象Insert,InsertBatch,Find,Update,Remove方法来完成CRUD操作
1.Insert
collection.Insert<Person>(model, SafeMode.True);
2.Find
collection.Find(Query.EQ("name", "jack"));
3.Update
collection.Update(Query.EQ("name", "jack"), Update.Set("Age", 20), SafeMode.True);
4.Remove
collection.Remove(Query.EQ("name", "jack"), SafeMode.True);
四、关于mongodb的查询
1. 建立索引是必须的,10gen公司建议所有查询尽可能建立在索引字段,利用索引提高查询效率,尽量避免表扫描
2. 根据查询的不同需要调整索引的顺序,因为不同的查询,利用索引的方式不同
3. 在服务器端执行explain来观察,分析查询的性能,以及当前索引是否合理
本文来自同事White的研究.
欢迎加入项目管理讨论群:261830264
- MongoDB最新驱动解析
- mongoDB最新技术交流
- Mongodb解析
- 安装ATI最新驱动
- thinkpad 最新 驱动 下载
- MongoDb 安装配置(最新)
- MongoDB C# 驱动教程
- MongoDB C# 驱动教程
- mongodb java 驱动
- Mongodb Ruby驱动入门
- PHP安装MongoDB驱动
- mongodb的php驱动
- MongoDB—驱动实践
- 安装PHP MongoDB驱动
- MongoDB—驱动实践
- 【MongoDb入门】驱动实践
- NodeJS中的mongodb驱动
- PHP安装MongoDB驱动
- Ubuntu下安装go语言
- C#字符与数字互相转换,字母转换成ASCII码,ASCII码转换字符
- 看完请思考一下
- 关于3D效果
- Windows 8的企业用户市场:“PC+mobile”的趋势会为Win 8带来企业用户吗?#Live to Code#
- MongoDB最新驱动解析
- Spatialite for Android编译及测试
- iOS设备常用控件尺寸简介
- Android:文件下载和写入SD卡学习小结
- iOS开发中使用[[UIApplication sharedApplication] openURL:] 加载其它应用
- C++ 0x之auto – 从初始化中推断数据类型
- Debugging with the Maven Jetty Plugin in Eclipse
- A Unix Utility You Should Know About: lsof
- 学生奖学金的等级