如何在c#驱动程序中编写以下MongoDB查询

本文关键字:MongoDB 查询 驱动程序 | 更新日期: 2023-09-27 18:08:02

我在Mongo控制台编写了我需要的确切查询,但我在c#驱动程序中重写它时遇到了麻烦。下面是文档的一个示例,它是一个简单的字典:

{
        "_id" : ObjectId("539716bc101c588f941e2c27"),
        "_t" : "DictionaryDocument",
        "CsvSeparator" : ",",
        "SelectedAccounts" : "0",
...
}

下面是查询:

db.settings.find({"SelectedAccounts" :{$exists:true}},{"SelectedAccounts":1, "_id":0} )

现在,我得到了第一部分,找到存在的工作,但如何在c#驱动程序中编写第二个参数?我只需要一个字符串作为结果,而不是整个文档。

这是我目前得到的c#代码:

_collection.FindOneAs(typeof(DictionaryDocument), Query.Exists(key));

键在本例中是"SelectedAccounts"。我希望查询过滤并只返回我需要的数据,我不想在c#端返回所有结果和搜索。

编辑:我不介意_id被传递回来,但我不需要它。所以只有这部分可以在c#中转换:

db.settings.find({"SelectedAccounts" :{$exists:true}},{"SelectedAccounts":1} )

如何在c#驱动程序中编写以下MongoDB查询

FindAs返回具有setfields方法的MongoCursor。这将返回一行请求的数据,但不会返回对象,而是只返回一行的枚举:

_collection.FindAs(typeof(DictionaryDocument), Query.Exists(key)).SetFields(Fields.Include(key)).SetLimit(1);