如何在C#中从IMongoCollection获取所有项目?

17
var users = database.GetCollection<ApplicationUser>("users");

Mongodb.driver 2.0 中没有 FindAll 函数。

4个回答

14

您应该使用空过滤器,例如users.Find(new BsonDocument()).ToListAsync();


14

直白而丑陋的方法:

await (await users.FindAsync(_ => true)).ToListAsync()

2
问题在于MongoDB新驱动程序已更改语法,但现有的示例已过时。 - Artem A

0

你可以使用LINQ

var collection = _db.GetCollection("users");
return (from x in collection.AsQueryable()
         select x["something"]).toList();

或许如果你使用的是Mongo Driver 2.7版本或者更高版本,下面的查询语句就可以编译通过。(注意这里的Users泛型参数是多余的)

List<string> q2=(from x in collection.AsQueryable<users>() select x.Name).ToList();

5
在MongoDB驱动程序2.0中,GetCollection将返回IMongoCollection<T>接口,该接口不包含AsQueryable()方法。 - iwaitu
@iwaitu 他们似乎严重削弱了IMongoCollection——它甚至不是IEnumerable!这到底是怎么回事?! - Josh M.

0
我建议使用这种方式,因为代码更加简洁(也许这段代码在旧版本的mongoDb驱动程序中无法工作)。

_db.GetCollection("users").Aggregate().ToList();


虽然此代码可能解决该问题,但包括解释如何以及为什么解决问题将有助于提高您的帖子质量,并可能导致更多赞。请记住,您正在回答未来读者的问题,而不仅仅是现在询问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接