2014-06-10 88 views
1

我在Mongo控制台中编写了我需要的确切查询,但我在C#驱动程序中重写它时遇到了问题。 下面是该文件的一个样本,它是简单的字典:如何在C#驱动程序中编写以下MongoDB查询?

{ 
     "_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}) 

回答

2

FindAs返回具有SetFileds方法的MongoCursor。这将返回一行与数据问,但不会返回对象,而是枚举与一行:

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