Я пытаюсь написать код, который находит объекты в коллекции MongoDB с Linq. Вот мой код:Поиск суб-объекта в коллекции MongoDB с использованием LINQ/C#
class Program
{
static void Main(string[] args)
{
var client = new MongoClient();
var db = client.GetDatabase("SoundsDB");
var collection = db.GetCollection<Sound>("SoundsCollection");
string myID = "0vvyXSoSHI";
var myObjects = collection
.Find(b => b.objectId == myID);
}
}
public class Sound
{
public string _id { get; set; }
public Result[] results { get; set; }
}
public class Result
{
public Audio_File audio_file { get; set; }
public DateTime createdAt { get; set; }
public string location { get; set; }
public string objectId { get; set; }
public DateTime updatedAt { get; set; }
}
public class Audio_File
{
public string __type { get; set; }
public string name { get; set; }
public string url { get; set; }
}
Вот JSON в моей коллекции MongoDB:
{
"_id" : ObjectId("56acced71b8ac8702446e8c6"),
"results" : [
{
"audio_file" : {
"__type" : "File",
"name" : "tfss-3c489351-0338-4903-8d94-a0f0c7091ef9-hi.m4a",
"url" : "http://files.parsetfss.com/hithere.m4a"
},
"createdAt" : "2014-12-27T22:59:04.349Z",
"location" : "Home",
"objectId" : "0vvyXSoSHI",
"updatedAt" : "2015-02-26T22:48:02.264Z"
}
]
}
Я пытаюсь заставить его работать, но в следующей строке:
.Find(b => b.objectId == myID)
Я получаю эту ошибку: Невозможно преобразовать lambda expre ssion, чтобы напечатать «MongoDB.Driver.FilterDefinition», потому что он не является типом делегата
Любая идея, как я могу его исправить и уметь искать через объекты JSON с помощью объекта objectId? Спасибо!
Хм, просто проверил его, и это строка в БД .. Я запустил код, который вы написали, и я думаю, что он работает успешно, но я не уверен, так как я не вижу никаких данных внутри этого объекта. –
Если вы используете последние mongodb драйвер (ы), то это все async. См. Обновления ответа. – bri
Не уверен, что я тебя понял .. Как мне это сделать асинхронно? –