2016-02-08 83 views
2

我是新在C#中蒙戈過濾器是可替換的查詢使用c#mongo查詢?

我發現拖的方式來查找文檔基於搜索critiria:

第一使用過濾器:

var collection = _database.GetCollection<BsonDocument>("restaurants"); 
var filter = Builders<BsonDocument>.Filter.Eq("address.zipcode", "10075"); 
var result = await collection.Find(filter).ToListAsync(); 

第二個使用查詢:

MongoCollection<BsonDocument> books; 
var query = Query.EQ("author", "Kurt Vonnegut"); 
foreach (BsonDocument book in books.Find(query)) { 
    // do something with book 
} 

尋找基於MongoDB推薦內容的文檔的最佳方式是什麼?

回答

1

據我所知查詢生成器(就像使用Query.EQ你的第二個例子)屬於舊版本的C#驅動程序的迭代(1.X )(見Query類)。另外,我建議你看生成器在這link部分確認查詢建設者是舊的方式來諮詢數據。

2.0版本的.NET驅動程序發佈後,進行了很多更改,包括查閱數據的方式(您可以在此link中閱讀更多內容)。如果您使用最後一個C#驅動程序版本,則應使用第一種方法。

+0

是的,這就是我所問的。,推薦第一種方法。感謝您的答案和鏈接。 – Khorshid

0

你提到的第一種方式非常好。您可能需要使用蒙戈光標也納入到允許您通過結果

var collection = _database.GetCollection<BsonDocument>("restaurants"); 
    var filter = Builders<BsonDocument>.Filter.Eq("address.zipcode", "10075"); 
    using(var _cursor = await collection.Find(filter).ToCursorAsync()) 
    { 
     while(await _cursor.MoveNextAsync()) 
     { 
      foreach(var _document in _cursor.Current) //gets current document 
      { 
       //you can do things like get the _id of the document 
       var _id = _document["_id"]; 
      } 
     } 
    }