2015-05-26 15 views
13

Muszę pobrać wszystkie dokumenty, które są w mojej kolekcji w MongoDB, ale nie wiem, jak to zrobić. I zadeklarowały moje „zbieranie” jak to-Zdobądź wszystkie "dokumenty" z kolekcji MongoDB '

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

a ja za to, co zostało wyjaśnione w this MongoDB tutoriala. I dostosować go do swoich potrzeb, jak-

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

Ja jednak zachować mający następującą ERROR-

MongoDB.Driver.IMongoCollection nie ma definicji „Znajdź” i najlepszy sposób zmienić metoda przedłużenia [superlong stuff]. Znajdź zawiera niepoprawne argumenty.

Odpowiedz

28

Korzystanie aktualną wersję sterownika (v2.0) można to zrobić przekazując filtr, który pasuje do wszystkiego:

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

Mają również dodany pusty filtr (FilterDefinition.Empty), który będzie przybyć w kolejnej wersji sterownika (v2.1):

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

Jeśli chcesz wszystkie dokumenty, dlaczego nie używać Find all?

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

Jeśli wolisz używać lambdy: ** czekają SpeCollection.Find (f => true) .ToListAsync(); ** –

4

Najprostszy sposób, aby odzyskać wszystkie documents-

var documents = SpeCollection.AsQueryable(); 

Można również przekształcić w Json object-

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