【问题标题】:How to retrieve data from mongodb using C# drivers version 2.2.0 and VS2015如何使用 C# 驱动程序版本 2.2.0 和 VS2015 从 mongodb 检索数据
【发布时间】:2016-05-03 16:01:33
【问题描述】:

我有一个简单的 mogodb 数据库,我想使用 C# 显示文档的内容。到目前为止,我已经编写了以下代码:

var mongo_client = new MongoClient();
var mongo_database = mongo_client.GetDatabase("database_name");
var collection=mongo_database.GetCollection<BsonDocument>("collection_name");
    using (var cursor = await collection.Find(new BsonDocument()).ToCursorAsync())
    {
        while (await cursor.MoveNextAsync())
        {
             foreach (var doc in cursor.Current)
             {
                 Console.WriteLine(doc);
             }
         }
     }

以上代码已被插入到异步方法中。连接已建立,但看起来它无法运行内部使用的代码。我在项目中添加了以下参考:MongoDB.Driver、MongoDB.Driver.Core 和 MongoDB.Bson。 指令Console.Writeline(doc); 没有显示任何内容,因为它没有被执行。但是为什么呢?

【问题讨论】:

    标签: c# mongodb visual-studio-2015


    【解决方案1】:

    尝试更改您的过滤器:

    var mongo_client = new MongoClient();
                var mongo_database = mongo_client.GetDatabase("database_name");
                var collection=mongo_database.GetCollection<BsonDocument>("collection_name");
                using (var cursor = await collection.Find(FilterDefinition<BsonDocument>.Empty).ToCursorAsync())
                {
                    while (await cursor.MoveNextAsync())
                    {
                        foreach (var doc in cursor.Current)
                        {
                            Console.WriteLine(doc);
                        }
                    }
                }
    

    另外,如果您可以将所有记录都放在内存中(它是一个小集合吗?)您可以简单地尝试ToListAsync

    var mongo_client = new MongoClient();
                var mongo_database = mongo_client.GetDatabase("database_name");
                var collection=mongo_database.GetCollection<BsonDocument>("collection_name");
                var allRecords = await collection.Find(FilterDefinition<BsonDocument>.Empty).ToListAsync();
    
               foreach (var doc in allRecords)
               {
                   Console.WriteLine(doc);
               }
    

    【讨论】:

    • 您的“document_name”集合中有文档吗?
    【解决方案2】:

    我找到了解决方案。这是正确的代码:

                var mongo_client = new MongoClient();
                var mongo_database = mongo_client.GetDatabase("database_name");
                var collection=mongo_database.GetCollection<BsonDocument>("collection_name");
                var records = collection.Find(FilterDefinition<BsonDocument>.Empty).ToList();
                foreach (var doc in records)
                {
                    Console.WriteLine(doc);
                }
    

    您不需要创建任何异步方法。您不需要使用 await 运算符。这要容易得多。

    【讨论】:

    • 如果将“FilterDefinition.Empty”替换为“new BsonDocument()”也可以。
    • 你不需要使用它并不意味着你不应该使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2017-04-16
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2019-03-01
    相关资源
    最近更新 更多