使用C#對MongoDB中的資料進行查詢,修改等操作

來源:互聯網
上載者:User

首先,使用的是官方提供的C#訪問組件https://github.com/mongodb/mongo-csharp-driver
然後、編譯後引用MongoDB.Bson.dll及MongoDB.Driver.dll,並在cs檔案中聲明引用using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders;第一個是針對Bson格式的命名空間,第二個是主空間,第三個是用來構造查詢和更新等條件的構造器命名空間
一、資料庫連接           MongoClient client = null;            MongoServer server = null;                   //connection            string conStr = "mongodb://user:pw@127.0.0.1/db1";            client = new MongoClient(conStr);            server = client.GetServer();            server.Connect();
注意串連串的寫法,上面的寫法是帶使用者認證的,關於串連串寫法的更多資訊可以參考http://docs.mongodb.org/ecosystem/tutorial/authenticate-with-csharp-driver/
二、擷取資料庫內的Collection            MongoDatabase db = server.GetDatabase("db1");            MongoCollection colaa = db.GetCollection("col1");這裡擷取在db1資料庫下,名為col1的Collection,
這裡擷取的MongoCollection支援泛型,可以按預設的BsonDocument為一行的格式擷取,也可以按自訂的類來擷取,若按BsonDocument為一行擷取,代碼如下(每個BsonDocument對象為Collection的一行):            MongoCursor<BsonDocument> doc = colaa.FindAllAs<BsonDocument>();            foreach (BsonDocument book in doc) {}
若按自訂的類為一行來擷取,代碼如下:            MongoCursor<row> res = colaa.FindAllAs<row>();                         foreach (row row1 in res){}這裡要注意,如果按自訂類來擷取,那麼類需要預先定義好,且類中的變數名必須與資料庫中一致,且列數也需要一致,若出現資料庫中有某一列,但類中缺少這個對象時,會報錯,下面是一個類定義的樣本:    public class row    {        public ObjectId _id;        public string name;        public string part;        public string age;    }上例中,FindAllAs函數為全部查詢,還有一些其它行查詢及篩選方法,見http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#mongocollection-tdefaultdocument-class中的MongoCollection部分三、讀取Collection中一行內的內容和上面對應的,有兩種情況,如果是按自訂類來擷取的資料行,那麼直接存取類的成員變數即可
如果是按BsonDocument擷取的,那每一行資料對應一個BsonDocument,一個BsonDocument是由多個“Name-Value"對構成的,其中Name為String格式,Value為BsonValue類型,該值可以直接使用book["name"]的格式進行訪問,關於BsonValue的進一步詳細說明,可以參考http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#bsonvalue-and-subclasses中的BsonValue部分
四:建立Collection建立Colletion很簡單,程式碼範例如下,但注意,如果已經存在了指定名稱的Collection,則會拋出異常            //create Collection            MongoDatabase db = server.GetDatabase("db1");            var res =db.CreateCollection("col2");
五:插入行同樣分兩種情況,插入方式基本相同,代碼如下:            //insert            MongoDatabase db = server.GetDatabase("db1");            MongoCollection colaa = db.GetCollection("col1");            //使用BsonDocument格式插入            BsonDocument doc = new BsonDocument { { "name", "sse2" }, { "part", "44224" } };            colaa.Insert(doc);            //使用自定類插入            row r1 = new row { name = "sse3", part = "554" };            colaa.Insert<row>(r1);
這裡注意一下,如果自訂類裡某一個變數沒有賦值,在插入到資料庫時,也會寫一個Null進去,而BsonDocument則不會出現這個元素,比如上兩個語句的運行結果:{ "_id" : ObjectId("5355d8dfccee160de4dca545"), "name" : "sse2", "part" : "44224" }{ "_id" : ObjectId("5355d93bccee16088491c420"), "name" : "sse3", "part" : "554", "age" : null }
還有一些的方法,例如批量寫入等,可以參考http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#insertbatch-method中的相應內容
六:更新行更新行時需要使用到構造器構造查詢條件和更新語句,Query為查詢條件構造器,Update為更新語句構造器,程式碼範例如下:           //update            MongoDatabase db = server.GetDatabase("db1");            MongoCollection colaa = db.GetCollection("col1");            var query = Query.And(                Query.EQ("name", "sse3"),                Query.EQ("part", "554")            );            var update = MongoDB.Driver.Builders.Update.Set("age", "36");            colaa.Update(query, update);
其它還有一些更新的函數,比如更新和插入為一體的Save等,可以參考http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#save-tdocument-method的相應內容
七:刪除行刪除行時也需要使用到Query構造器構造查詢條件,語句會將合格行刪除掉,程式碼範例如下:           //remove            MongoDatabase db = server.GetDatabase("db1");            MongoCollection colaa = db.GetCollection("col1");            var query = Query.And(                Query.EQ("name", "sse3"),                Query.EQ("part", "554")            );            var res = colaa.Remove(query);

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.