2015-05-26 3 views
13

Мне нужно получить все документы, которые находятся в моей коллекции в MongoDB, но я не могу понять, как это сделать. Я объявил свою «коллекцию», как this-Получить все «документы» из коллекции MongoDB '

private static IMongoCollection<Project> SpeCollection = db.GetCollection<Project>("collection_Project"); 

И я последовал за то, что объясняется в this MongoDB учебнике. Я настроил его для моих потребностей, как-

var documents = await SpeCollection.Find(new Project()).ToListAsync(); 

Однако я продолжаю, имеющие следующую error-

MongoDB.Driver.IMongoCollection не имеет определения «Найти» и лучшее переопределение метод расширения [сверхдлинные вещи]. Поиск содержит недействительные аргументы.

ответ

28

Используя текущую версию драйвера (v2.0), вы можете сделать это путем пропускания фильтра, который соответствует всем:

var documents = await SpeCollection.Find(_ => true).ToListAsync(); 

Они также добавили пустой фильтр (FilterDefinition.Empty), который будет прибыть в следующей версии драйвера (v2.1):

var documents = await SpeCollection.Find(Builders<Project>.Filter.Empty).ToListAsync(); 
3

Если вы хотите, чтобы все документы, почему бы не использовать Find all?

var documents = await SpeCollection.Find(new BsonDocument()).ToListAsync(); 
+1

Если вы предпочитаете использовать лямбды: ** ждут SpeCollection.Find (е => верно) .ToListAsync() **; –

4

Простейший способ получить все документация-

var documents = SpeCollection.AsQueryable(); 

Он также может быть преобразован в Json object-

var json = Json(documents, JsonRequestBehavior.AllowGet);