2016-02-08 34 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"]; 
      } 
     } 
    }