是过滤器是使用 C# 的 MONGO 查询中查询的可替换的
本文关键字:查询 可替换 MONGO 过滤器 | 更新日期: 2023-09-27 18:33:56
我是 c# 中 mongo 的新手
我找到了基于搜索关键字查找文档的方法:
第一个使用过滤器:
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的建议查找文档的最佳方法是什么?
据我所知,查询生成器(如您使用Query.EQ
的第二个示例)属于旧版本的 C# 驱动程序 (1.X)(请参阅查询类)。此外,我建议您查看此链接中的"生成器"部分,以确认查询生成器是查询数据的旧方法。
.NET 驱动程序的 2.0 版本发布后,进行了许多更改,包括查询数据的方式(可以在此链接中阅读有关此内容的更多信息)。如果使用的是最后一个 C# 驱动程序版本,则应使用第一种方法。
你提到的第一种方法很好。您可能还希望使用 mongo 游标进行合并,以允许您循环访问结果
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"];
}
}
}