学习mongodb,试着翻译写,英语能力有限,但愿你们指正,不畅地方你们担待,会后续翻译后面内容;git
本介绍提供了足够的信息,让你开始使用C#的驱动程序。起步以后,你能够参考文档的其他部分,了解更多信息。github
最简单的下载C#官方驱动的方式是经过Nuget,(当前version:1.8.2)mongodb
你也能够在此地址下载该驱动数据库
https://github.com/mongodb/mongo-csharp-driver/releases安全
若是是下载的是.zip文件,只要简单的解压并放在任何一个位置便可,若是下载的是.msi文件,点击便可运行安装,该程序会把全部dlls安装到C:\ProgramFiles (x86)\MongoDB\CSharp Driver 1.x服务器
具体的路径根据你的系统而定函数
右键点击添加引用找到相应的dll添加到解决方案中,你须要添加如下dll的引用:学习
固然,你能够直接用NuGet直接添加C#驱动dll到你的解决方案中。ui
至少你要引入如下命名空间spa
using MongoDB.Bson; using MongoDB.Driver;
另外,你可能会常常引入下面一个或者多个命名空间
1 using MongoDB.Driver.Builders; 2 using MongoDB.Driver.GridFS; 3 using MongoDB.Driver.Linq;
在其余特殊的一些状况下,会要引入另外的一些命名空间
最简单的获取client object引用的方式是经过国一个链接字符串
1 String connectionString = "mongodb://localhost"; 2 MongoClient client = new MongoClient(connectionString);
你能够存储client object 在一个全局变量中,MongoClient是线程安全的。
Server object对象经过client object对象来建立::
1 MongoServer server = client.GetServer();
经过server object对象获取数据库对象引用
1 var database = server.GetDatabase("test"); // test为adb名称
若是你使用的不值一个数据库,你能够经过GetDatabase获取任何一个数据库对象的引用
有两种让你能够建立document方式:
若是数据很难或者很散很难定义成相关实体,你能够经过BsonDocument来操做。
因为使用自定义类比较方便,这个教程中将要使用这种方式,C#驱动程序可让使用你提供了一下内容的自定义类
1.具备无参的构造函数
2.定义了可读写的属性
这些要求和.NET’s XmlSerializer.所要求的同样
另外,若是你的自定义类做为根文档,它必须包含一个id字段或者一个id属性,(可是须要时你能够重写他),通常id类型为ObjectId,但并未对其类型进行强制约束
请看下面类实体定义:
public class Entity { public ObjectId Id { get; set; } public string Name { get; set; } }
你能够经过以下方式获取集合对象
// "entities" 为集合名称 var collection = database.GetCollection<Entity>("entities");
插入一个实体对象:
var entity = new Entity { Name = "Tom" }; collection.Insert(entity); var id = entity.Id; // insert时候会对id进行赋值
在这个例子中假设知道id的值,咱们将读取这个实体对象的值
var query = Query<Entity>.EQ(e => e.Id, id); var entity = collection.FindOne(query);
Query<Entity>.EQ 使用Query泛型类建立query对象,lambda表达式e => e.Id 指向到咱们集合中定义的字段
说明:
通常说来,数据库中字段是和自定义实体中字段彻底同样的,可是id是一个例外,他会映射到数据库中_id字段
其余查询操做
包括: GT, 大于
GTE,大于等于
In, LT, LTE, Near, NE, And, Or还有一些其余的
你能够像这样保存一个文档:
entity.Name = "Dick"; collection.Save(entity);
保存的另外一个方式就是更新,不一样之处在于保存会发送整个对象到服务器,更新只会发送对象改变的部分,例如:
var query = Query<Entity>.EQ(e => e.Id, id); var update = Update<Entity>.Set(e => e.Name, "Harry"); //更新 collection.Update(query, update);
经过update方法方便的进行更新操做
你能够经过下面的方式移除文档对象
var query = Query<Entity>.EQ(e => e.Id, id); collection.Remove(query);
C#的驱动程序都有一个链接池,有效地使用链接到服务器。因此无需调用Connect 或者Disconnect;只要交给驱动处理便可(调用Connect 没什么影响,可是调用Disconnect 会关掉链接池全部链接)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Builders; namespace ConsoleApplication1 { public class Entity { public ObjectId Id { get; set; } public string Name { get; set; } } class Program { static void Main(string[] args) { var connectionString = "mongodb://localhost"; var client = new MongoClient(connectionString); var server = client.GetServer(); var database = server.GetDatabase("test"); var collection = database.GetCollection<Entity>("entities"); var entity = new Entity { Name = "Tom" }; collection.Insert(entity); var id = entity.Id; var query = Query<Entity>.EQ(e => e.Id, id); entity = collection.FindOne(query); entity.Name = "Dick"; collection.Save(entity); var update = Update<Entity>.Set(e => e.Name, "Harry"); collection.Update(query, update); collection.Remove(query); } } }