首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历结果集MongoDB 3

问循环遍历结果集MongoDB 3
EN

Stack Overflow用户
提问于 2015-11-04 17:33:57
回答 1查看 7.3K关注 0票数 4

我有一个C#应用程序,它应该读写MongoDB 3数据库。不幸的是,使用MongoDB 3时,许多名称空间和方法都发生了变化,因此这有点困难。

下面是我的代码:

代码语言:javascript
复制
        string connectionString = Settings.Default.MongoConnectionString;
        string databaseName = Settings.Default.MongoDatabaseName;

        var client = new MongoClient(connectionString);
        var db = client.GetDatabase(databaseName);

        IMongoCollection<Post> collection = db.GetCollection<Post>("post");

        foreach (var post in collection.FindAll())
        {
            // Display to the user
        }

由于某种原因,"MongoCollection“类不再存在。如何用新版本的MongoDB循环返回的结果?

我得到了以下错误:

'IMongoCollection‘不包含'FindAll’的定义,也找不到接受'IMongoCollection‘类型第一个参数的扩展方法'FindAll’。

有人知道用新版本循环整个集合的正确方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 17:40:53

新的C#驱动程序(2.0)是完全异步的。为了枚举集合中的所有文档,应该传递空筛选器并使用ToListAsync()。

代码语言:javascript
复制
var filter = Builders<Post>.Filter.Empty;
foreach(var post in collection.Find(filter).ToListAsync().Result)
   // display

您还可以使用lambda代替空过滤器:

代码语言:javascript
复制
collection.Find(p => true).ToListAsync()

当然,您可以通过等待文档来创建异步方法,而不是阻塞:

代码语言:javascript
复制
private async Task YourMethod()
{
    // ...
    var posts = await collection.Find(filter).ToListAsync();
    foreach(var post in posts)
       // display
}

推荐阅读:介绍2.0 .NET驱动程序

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33528368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档