是过滤器是使用 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的建议查找文档的最佳方法是什么?

是过滤器是使用 C# 的 MONGO 查询中查询的可替换的

据我所知,查询生成器(如您使用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"];
            }
        }
    }