Я написал точный запрос, который мне нужен на консоли Mongo, но у меня возникли проблемы с переписыванием его в драйвере С#. Вот образец документа, это простой словарь:
{
"_id" : ObjectId("539716bc101c588f941e2c27"),
"_t" : "DictionaryDocument",
"CsvSeparator" : ",",
"SelectedAccounts" : "0",
...
}
Здесь запрос:
db.settings.find({"SelectedAccounts" :{$exists:true}},{"SelectedAccounts":1, "_id":0} )
Теперь у меня есть первая часть, Find with exists работает, но как записать второй параметр в С# драйвер? В результате я хотел бы получить только одну строку, а не весь документ.
Здесь код С#, который я получил до сих пор:
_collection.FindOneAs(typeof(DictionaryDocument), Query.Exists(key));
ключ в этом случае - "SelectedAccounts". Я хотел бы, чтобы запрос фильтровал и возвращал только нужные мне данные, я не хочу возвращать все результаты и искать на стороне С#.
EDIT: Я бы не прочь, если бы я вернулся, но мне это не нужно. Таким образом, только эта часть будет работать, если она может быть преобразована в С#:
db.settings.find({"SelectedAccounts" :{$exists:true}},{"SelectedAccounts":1} )
FindAs возвращает MongoCursor, который имеет метод SetFileds. Это вернет одну строку с запрошенными данными, но не вернет объект, а скорее перечисление с одной строкой:
_collection.FindAs(typeof(DictionaryDocument), Query.Exists(key)).SetFields(Fields.Include(key)).SetLimit(1);