添加 C# 驅動 DLL引用 在Visual Studion解決方案資源管理器的“引用”目錄上右鍵,選擇“添加引用……”。找到C#驅動DLL所在目錄,添加以下DLL引用: 1. MongoDB.Bson.dll 2. MongoDB.Driver.dll 還可以用NuGet程序包管理器來添加 C# 驅動包到你的解決方案中。 添加必需的using語句 你至少需要以下using語句: using MongoDB.Bson; using MongoDB.Driver; 另外,通常還會用到以下一個或多個using語句: using MongoDB.Driver.Builders; using MongoDB.Driver.GridFS; using MongoDB.Driver.Linq; 還有一些命名空間只在特殊場合用的上。 獲取客戶端對象引用 獲取一個客戶端對象引用的最簡單方法就是使用連接字符串了: var connectionString = "mongodb://localhost"; var client = new MongoClient(connectionString); 如果想在全局變量中存儲該客戶端對象,沒問題,MongoClient是線程安全的。 獲取服務端對象引用 要從客戶端對象獲取服務端對象引用,這麼寫: var server = client.GetServer(); 獲取數據庫對象引用 要從服務端對象獲取數據庫對象引用,這麼寫: var database = server.GetDatabase("test"); // "test" 是數據庫名稱 如果要使用多於一個的數據庫,為每一個你想使用的數據庫再次調用 GetDatabase 即可。 決定是使用 BsonDocument 對象還是你自己的類。 有兩種使用集合的方法: 1. 使用 BsonDocument 對象模型 2. 使用自己的實體類 如果數據格式很隨意,很難或不可能定義成實體類的話,那就使用 BsonDocument 對象模型。 由於使用自己的實體類更容易得多,所以本文將假定你采用的是這種方法。 你的實體類必須有以下要求: 1. 具有無參構造函數 2. 對於要存儲在數據庫裡的數據,需定義公共的讀/寫字段或屬性 這些要求與.NET的XmlSerializer對類的要求本質上是一樣的。 另外,如果實體類將作為根級文檔,那它必須包含一個Id字段或屬性(通常命名為“Id”,即使有需要你可以重寫它)。通常Id的類型為ObjectId。 獲取集合對象引用 為了演示,假設你用的是名為Entity的實體類。要獲取包含Entity文檔的集合引用,可以像這樣寫: var collection = database.GetCollection<Entity>("entities"); // "entities" 是集合的名稱 插入一個文檔 插入文檔很簡單: var entity = new Entity { Name = "Tom" }; collection.Insert(entity); var id = entity.Id; // 如有必要,Insert 會設置Id的值(這個例子就是如此) 查找已有文檔 在本例中,假設我們已經知道Id的值,去找它對應的Entity: var query = Query.EQ("_id", id); var entity = collection.FindOne(query); Query.EQ 是用 Query builder 類來幫你創建查詢。 "_id" 是存在數據庫中的字段名(通常數據庫中的字段名跟你實體類 的字段或屬性名是一樣的,但Id是一個例外,它映射為數據庫中的”_id“)。 其它的查詢操作包括: GT, GTE, In, LT, LTE, Near, NE, And, Or (和一些其它更專用的). 保存文檔 可以像這樣保存一個現有文檔的修改: entity.Name = "Dick"; collection.Save(entity); 更改現有的文檔 Update是另一種Save。不同在於 Save 將整個文檔回傳給服務端,但Update只發送更改的部分。例如: var query = Query.EQ("_id", id); var update = Update.Set("Name", "Harry"); // 更新修飾符 collection.Update(query, update); 本例使用 Update builder 來簡單地創建更新修飾符。 移除已有的文檔 要從集合中移除已有的文檔,這麼寫: var query = Query.EQ("_id", id); collection.Remove(query); 不需要調用 Connect 或者 Disconnect 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.EQ("_id", id); entity = collection.FindOne(query); entity.Name = "Dick"; collection.Save(entity); var update = Update.Set("Name", "Harry"); collection.Update(query, update); collection.Remove(query); } } }