C#中使用1.7版本驱动操作MongoDB简单例子
//创建数据库链接
//在1.7的版本驱动中这样写是会报MongoServer方法已过时的
//MongoServerserver= MongoDB.Driver.MongoServer.Create(strconn);
//带有用户名,密码的如下写法,不带的则直接ip+端口就可以
conststringconnectionString="mongodb://city:liyang@192.168.1.211:27017";
//得到一个客户端对象的引用 GetServer()对服务器对象的引用
varServer=newMongoClient(connectionString).GetServer();
//到一个数据库对象的引用
varclient=Server.GetDatabase("City");
//对一组对象的引用
varcollection=client.GetCollection<citys>("citys");
//插入一个实体
for(inti=0;i<dt.Rows.Count;i++)
{
collection.Insert(newcitys
{
province=dt.Rows[i][0].ToString(),
city=dt.Rows[i][1].ToString(),
county=dt.Rows[i][2].ToString(),
areacode="0"+dt.Rows[i][3].ToString(),
postalcode=dt.Rows[i][3].ToString()
});
}
以下是git上的帮助文档 地址是:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/
将一个引用添加到c#司机dll
右键单击引用文件夹在VisualStudio的解决方案探险家和选择添加参考……。导航到文件夹c#驱动程序dll被安装并添加一个引用以下dll:
MongoDB.Bson.dll
MongoDB.Driver.dll
作为一种替代方法可以使用NuGet包管理器添加c#驱动程序包来您的解决方案。
添加所需的使用语句
作为一个最低需要使用语句如下:
usingMongoDB.Bson;
usingMongoDB.Driver;
此外,您会经常添加一个或多个使用声明:
usingMongoDB.Driver.Builders;
usingMongoDB.Driver.GridFS;
usingMongoDB.Driver.Linq;
还有其他名称空间,只会在特殊的需要用例。
得到一个客户端对象的引用
最简单的方法获得一个客户对象的引用是使用连接字符串:
varconnectionString="mongodb://localhost";
varclient=newMongoClient(connectionString);
如果你想将客户端对象存储在一个全局变量。MongoClient是线程安全的。
对服务器对象的引用
要从客户端到服务器对象的引用对象,写这样的:
varserver=client.GetServer();
到一个数据库对象的引用
去到一个数据库对象的引用从服务器对象,写这样的:
vardatabase=server.GetDatabase("test");//"test"isthenameofthedatabase
如果您使用多个数据库,调用GetDatabase再次为每个您想要使用数据库。
BsonDocument对象模型与您自己的域类
有两种方法可以处理集合:
使用BsonDocument对象模型
使用自己的域类
您将使用BsonDocument当数据对象模型工作是如此的自由形式,它将是困难的或不可能的定义的域类。
因为它是如此容易使用自己的域类快速启动将假设你要这样做。c#驱动程序提供,他们可以处理您的域类:
有一个无参数的构造函数
定义公共读/写数据的字段或属性存储在数据库中
这些需求在本质上是相同的。net的实施XmlSerializer。
此外,如果您的域类将被用作根文档必须包含一个ID字段或属性(通常是命名ID尽管你可以覆盖,如果必要)。通常情况下,ID将类型的ObjectId,但没有限制的类型的成员。
考虑下面的类定义:
publicclassEntity
{
publicObjectIdId{get;set;}
publicstringName{get;set;}
}
对一组对象的引用
你会得到一个包含引用集合实体文件是这样的:
//"entities"isthenameofthecollection
varcollection=database.GetCollection<Entity>("entities");
插入文档
插入一个实体:
varentity=newEntity{Name="Tom"};
collection.Insert(entity);
varid=entity.Id;//InsertwillsettheIdifnecessary(asitwasinthisexample)
找到一个现有的文档
在这个示例中,我们将读回实体假设我们知道ID值:
varquery=Query<Entity>.EQ(e=>e.Id,id);
varentity=collection.FindOne(query);
查询<单位>.EQ使用查询<T>构建器类来构建查询。lambda表达式E=>e.Id是翻译_ID。这是字段的名称存储在数据库中。
请注意
通常的名称字段在数据库中是完全相同的正如它的名字域类中的字段或属性,但是ID是一个例外,映射到吗_ID在数据库中。
其他查询操作符包括:GT,一种,在,LT,LTE,附近,东北,和,或(和其他一些更多专业的)。
保存一个文档
你可以保存更改现有的文档如下:
entity.Name="Dick";
collection.Save(entity);
更新现有的文档
另一种选择保存是更新。所不同的是,保存将整个文档发送回服务器,但是更新发的变化。例如:
varquery=Query<Entity>.EQ(e=>e.Id,id);
varupdate=Update<Entity>.Set(e=>e.Name,"Harry");//updatemodifiers
collection.Update(query,update);
下面的例子使用了更新<T>构建器轻松地构建更新修饰符。
删除一个现有的文档
删除一个现有的文档集合你写:
varquery=Query<Entity>.EQ(e=>e.Id,id);
collection.Remove(query);
你不需要调用连接或断开连接
c#司机有一个连接池使用连接到服务器效率。不需要电话连接或断开;让司机照顾连接(调用连接是无害的,但是打电话呢断开是不好的,因为它关闭连接池中的连接)。
完整的示例程序
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingMongoDB.Bson;
usingMongoDB.Driver;
usingMongoDB.Driver.Builders;
namespaceConsoleApplication1
{
publicclassEntity
{
publicObjectIdId{get;set;}
publicstringName{get;set;}
}
classProgram
{
staticvoidMain(string[]args)
{
varconnectionString="mongodb://localhost";
varclient=newMongoClient(connectionString);
varserver=client.GetServer();
vardatabase=server.GetDatabase("test");
varcollection=database.GetCollection<Entity>("entities");
varentity=newEntity{Name="Tom"};
collection.Insert(entity);
varid=entity.Id;
varquery=Query<Entity>.EQ(e=>e.Id,id);
entity=collection.FindOne(query);
entity.Name="Dick";
collection.Save(entity);
varupdate=Update<Entity>.Set(e=>e.Name,"Harry");
collection.Update(query,update);
collection.Remove(query);
}
}
}
相关文章
- C# 调用js库的方法
- MongoDB入门教程之C#驱动操作实例
- C# 可空值类型详解编程语言
- 构建MongoDB群集构建:极速启动高可用集群(mongodb群集)
- MongoDB驱动的图像存储功能(mongodb存储图像)
- MongoDB驱动:极致的简洁体验(mongodb驱动)
- MongoDB实现高效分页技术(mongodb高效分页)
- MongoDB语法指南:玩转NoSQL查询(mongodb语法)
- 实现安全:MongoDB 权限管理指南(mongodb权限管理)
- MongoDB:解读运行机制(mongodb进程)
- 数据库MongoDB:如何快速清空数据库(mongodb清空)
- push使用MongoDB数组push添加数据(mongodb数组)
- MongoDB实现安全的密码登录(mongodb密码登录)
- Mongodb快速新建表,更高效管理数据(mongodb新建表)
- C语言驱动连接MongoDB:实现数据库服务器之间的连接(c连接mongodb)
- MongoDB与C的完美结合(mongodb(c#))
- MongoDB革新发布:用于更好的数据持久化(mongodb发布)
- c#winform窗口一直置顶显示在桌面最上方或最底层的方法
- c#winform关闭窗体时同时结束线程实现思路
- .NET(C#):Emit创建异常处理的方法
- 介绍C#泛型类在使用中约束
- C#保存上传来的图片示例代码
- .net/c#memcached缓存获取所有缓存键的方法步骤
- c#根据文件大小显示文件复制进度条实例
- C#中foreach原理以及模拟的实现
- C#索引器介绍
- C#使用smtp发送带附件的邮件实现方法
- C#实现过滤html标签并保留a标签的方法