博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB最新驱动解析
阅读量:6081 次
发布时间:2019-06-20

本文共 1913 字,大约阅读时间需要 6 分钟。

.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. 根据查询的不同需要调整索引的顺序,因为不同的查询,利用索引的方式不同

3. 在服务器端执行explain来观察,分析查询的性能,以及当前索引是否合理

转载于:https://www.cnblogs.com/wencangz/archive/2012/11/08/2760535.html

你可能感兴趣的文章
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>
数组扩展方法之求和
查看>>
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
使用ansible工具部署ceph
查看>>
linux系列博文---->深入理解linux启动运行原理(一)
查看>>
Android反编译(一) 之反编译JAVA源码
查看>>
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>