从MongoDB'集合'获取所有'文档'

Nic*_*asR 25 .net c# mongodb mongodb-csharp-2.0 mongodb-.net-driver

我需要检索MongoDB中我的集合中的所有文档,但我无法弄清楚如何.我已经宣布我的'收藏'像这样 -

private static IMongoCollection<Project> SpeCollection = db.GetCollection<Project>("collection_Project");
Run Code Online (Sandbox Code Playgroud)

我遵循的是在解释这个 MongoDB的教程.我根据自己的需要调整了它,比如 -

 var documents = await SpeCollection.Find(new Project()).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

但是,我一直有以下错误 -

MongoDB.Driver.IMongoCollection没有'Find'的定义和扩展方法[superlong stuff]的最佳覆盖.查找包含无效的参数.

i3a*_*non 56

使用当前版本的驱动程序(v2.0),您可以通过传递匹配所有内容的过滤器来实现:

var documents = await SpeCollection.Find(_ => true).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

他们还添加了一个空的filter(FilterDefinition.Empty),它将到达驱动程序的下一个版本(v2.1):

var documents = await SpeCollection.Find(Builders<Project>.Filter.Empty).ToListAsync();
Run Code Online (Sandbox Code Playgroud)


Min*_*mal 7

最简单的方法

检索所有文件 -

var documents = SpeCollection.AsQueryable();
Run Code Online (Sandbox Code Playgroud)

也转换为JSON对象 -

var json = Json(documents, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)

  • 什么是 Json()? (3认同)

S.S*_*ker 5

如果需要所有文档,为什么不使用Find all

var documents = await SpeCollection.Find(new BsonDocument()).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

  • 如果您更喜欢使用 lambdas:**await SpeCollection.Find(f=&gt;true).ToListAsync();** (2认同)