mongodb 查詢的用法

來源:互聯網
上載者:User

標籤:

想要在C#中使用MongoDB,首先得要有個MongoDB支援的C#版的驅動。C#版的驅動貌似有很多種,如官方提供的samus。 實現思路大都類似。這裡我們用官方提供的mongo-csharp-driver :

:http://github.com/mongodb/mongo-csharp-driver/downloads

解壓之後得到兩個dll:

 MongoDB.Driver.dll:顧名思義,驅動程式

 MongoDB.Bson.dll:序列化、Json相關

 然後在我們的程式中引用這兩個dll。

 

2、串連資料庫

 

[csharp] view plain copy  
  1. using MongoDB.Bson;  
  2. using MongoDB.Driver;  



 

 

[csharp] view plain copy  
  1. //資料庫連接字串  
  2. const string strconn = "mongodb://127.0.0.1:27017";  
  3. //資料庫名稱  
  4. const string dbName = "test";  
  5. MongoServer server;  
  6. MongoDatabase db;  
  7. void Init()  
  8. {  
  9.     //建立資料庫連結  
  10.     server = MongoDB.Driver.MongoServer.Create(strconn);  
  11.     //獲得資料庫  
  12.     db = server.GetDatabase(dbName);  
  13. }  

 

 

3、查詢資料

1)查詢規則集合

 

[csharp] view plain copy  
  1. class Users  
  2. {  
  3.     public ObjectId _id;//BsonType.ObjectId 這個對應了 MongoDB.Bson.ObjectId   
  4.     public string Name { get; set; }  
  5.     public string Sex { set; get; }  
  6. }  
  7. const string ENTER = "\r\n";  
  8. private void btnQuery_Click(object sender, EventArgs e)  
  9. {  
  10.     //擷取Users集合  
  11.     MongoCollection col = db.GetCollection("Users");  
  12.     //查詢全部集合裡的資料  
  13.     var result1 = col.FindAllAs<Users>().ToList();  
  14.     StringBuilder sb = new StringBuilder("");  
  15.     foreach (Users user in (List<Users>)result1)  
  16.     {  
  17.         sb.Append(user.Name + ENTER);  
  18.     }  
  19.     MessageBox.Show(sb.ToString());  
  20. }  


這種方式只適合每個文檔(document)結構都一樣的集合:

 

 

但是NoSql詬病關係型資料庫的論點之一,就是這種所謂每條記錄的結構都要保持一致的情況,因為有些欄位不是所有記錄的必須。那麼,在mongoDB這裡,對於集合中文檔結構不一致的情況下,上述代碼擷取不到資料,似乎應該採用如下方式:

2)查詢不規則集合

集合情況:

 

在集合thins裡,基本上每個文檔結構都不一樣。

尋找代碼如下:

 

[csharp] view plain copy  
    1. private void btnQuery2_Click(object sender, EventArgs e)  
    2. {  
    3.     //擷取thins集合  
    4.     MongoCollection col = db.GetCollection("thins");  
    5.     //查詢全部集合裡的資料  
    6.     var result1 = col.FindAllAs<BsonDocument>().ToList();  
    7.     StringBuilder sb = new StringBuilder("");  
    8.     foreach (BsonDocument bd in (List<BsonDocument>)result1)  
    9.     {  
    10.         string name = bd.Contains("name") ? bd.GetValue("name").ToString() : "不存在";  
    11.         sb.Append(name + ENTER);  
    12.     }  
    13.     MessageBox.Show(sb.ToString());  
    14. }  

mongodb 查詢的用法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.