在C#中使用官方驅動操作MongoDB

齊大飛發表於2015-10-20

MongoDB的官方驅動下載地址:https://github.com/mongodb/mongo-csharp-driver/releases

目前最新的版本是2.10,支援.NET 4.5以上。由於我現在的程式還在.NET4.0上面構建,所以這裡使用1.10.1版本。

新增引用

解壓下載到的驅動,然後在我們的程式中新增引用:

MongoDB.Bson.dll
MongoDB.Driver.dll

然後在程式碼中新增Using:

using MongoDB.Bson;
using MongoDB.Driver;

 

建立Client、Server、Database

var connectionString = "mongodb://localhost:27017";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var db = server.GetDatabase("mydb");

connectionString可以從配置檔案中獲取。

client物件是執行緒安全的,那麼,我們可以把它存到一個全域性的變數中。

有了db物件,我們就可以進行訪問了。

使用Collection

Collection是文件(document)的集合,可以理解為我們的資料表。而每一個文件就是我們的一行資料。在MongoDB的驅動中,我們有兩種方式來使用Collection:

  1. 使用 BsonDocument 模型
  2. 使用自定義的實體模型

如果我們的文件結構比較複雜,或者定義為實體模型比較困難,那麼推薦使用BsonDocument模型。

如果我們的文件結構清晰,儲存的欄位也是固定的,那麼推薦使用自定義的實體模型。實體物件的格式如下:

public class Entity
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
}

我們在獲取Collection引用的時候,需要提供一個文件型別:

var collection = db.GetCollection<Entity>("entities");

CURD操作

在有了Collection之後,我們可以寫一個CURD的例子:

var collection = db.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);

 

作者:齊飛(youring2@gmail.com

原文連結:http://www.qeefee.com/article/000559

相關文章