MongoDB驅動種類介紹
1. MongoDB官方驅動:mongo-csharp-driver,:https://github.com/mongodb/mongo-csharp-driver/downloads
2. 第三方驅動samus,這是一款使用使用較多的驅動,更新頻率比較快,samus驅動除了支援一般形式的操作之外,還支援Linq 和Lambda 運算式。:https://github.com/samus/mongodb-csharp。
兩個mongodb驅動對mongodb資料庫的操作流程基本相同,只不過在實現方式上有所差異,如samus驅動除了支援一般的形式操作之外,還支援Linq和Lambda表達方式。
使用MongoDB官方驅動操作資料庫
解壓縮包得到如下兩個檔案:
MongoDB.Bson.dll :序列化、Json相關
MongoDB.Driver.dll :mongodb驅動
添加引用,將上面兩個DLL引入到項目裡面
向代碼中引入命名空間
using MongoDB.Bson;using MongoDB.Driver;
獲得資料庫連接服務
string connectionString = " mongodb://localhost " ; //mongodb://[username:password@]hostname[:port][/[database][?options]]MongoServer server = MongoServer.Create(connectionString);// 串連到一個MongoServer上
獲得指定資料庫物件引用
MongoDatabase database = server.GetDatabase("test"); // "test" 是資料庫名稱
獲得指定集合,如果資料庫中沒有,則會建立一個
MongoCollection col = db.GetCollection("Users");//Users集合名
插入資料到資料庫
public void Insert(){ //建立資料庫連結MongoServer server = MongoDB.Driver.MongoServer.Create(strconn); //獲得資料庫testMongoDatabase db = server.GetDatabase(dbName); Users users = new Users(); users.Name = "test"; users.Sex = "man"; //獲得Users集合,如果資料庫中沒有,先建立一個MongoCollection col = db.GetCollection("Users"); //執行插入操作col.Insert<Users>(users);}
更新資料
public void Update(){ //建立資料庫連結MongoServer server = MongoDB.Driver.MongoServer.Create(strconn); //獲得資料庫testMongoDatabase db = server.GetDatabase(dbName); //擷取Users集合MongoCollection col = db.GetCollection("Users"); //定義擷取“Name”值為“test”的查詢條件var query = new QueryDocument { { "Name", "test" } }; //定義更新文檔var update = new UpdateDocument { { "$set", new QueryDocument { { "Sex", "wowen" } } } }; //執行更新操作col.Update(query, update);}
刪除資料
public void Delete(){ //建立資料庫連結MongoServer server = MongoDB.Driver.MongoServer.Create(strconn); //獲得資料庫testMongoDatabase db = server.GetDatabase(dbName); //擷取Users集合MongoCollection col = db.GetCollection("Users"); //定義擷取“Name”值為“test”的查詢條件var query = new QueryDocument { { "Name", "test" } }; //執行刪除操作col.Remove(query);}
查詢資料
public void Query(){ //建立資料庫連結MongoServer server = MongoDB.Driver.MongoServer.Create(strconn); //獲得資料庫testMongoDatabase db = server.GetDatabase(dbName); //擷取Users集合MongoCollection col = db.GetCollection("Users"); //定義擷取“Name”值為“test”的查詢條件var query = new QueryDocument { { "Name", "test" } }; //查詢全部集合裡的資料var result1 = col.FindAllAs<Users>(); //查詢指定查詢條件的第一條資料,查詢條件可預設。var result2 = col.FindOneAs<Users>(); //查詢指定查詢條件的全部資料var result3 = col.FindAs<Users>(query);}
總結
有兩種使用集合的方法:使用 BsonDocument 物件模型、 使用自己的實體類。本文主要介紹 使用實體。 如果資料格式很隨意,很難或不可能定義成實體類的話,那就使用 BsonDocument 物件模型。由於使用自己的實體類更容易得多,並且確定使用實體, 你的實體類必須有以下要求:具有無參建構函式 , 對於要儲存在資料庫裡的資料,需定義公用的讀/寫欄位或屬性。如果實體類將作為根級文檔,那它必須包含一個Id欄位或屬性(通常命名為“Id”,即使有需要你可以重寫它)。通常Id的類型為ObjectId。