zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#中使用1.7版本驱动操作MongoDB简单例子

c#MongoDB驱动 使用 操作 简单 版本 例子
2023-06-13 09:15:39 时间

复制代码代码如下:


//创建数据库链接
//在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);
       }
   }
}