【问题标题】:Mongodb c# retrieving elementMongodb c# 检索元素
【发布时间】:2017-08-24 06:43:51
【问题描述】:

我尝试从数据库集合中检索特定元素。

collection.Find(new BsonDocument()).ForEachAsync(X => Console.WriteLine(X));

此代码给出如下内容:

{ "_id" : ObjectId("599d420bf2e1abfed53fe3c6"), "no" : 9, "word" : "write" }

{ "_id" : ObjectId("599d420bf2e1abfed53fe3c8"), "no" : 10, "word" : "first" }

{ "_id" : ObjectId("599d420bf2e1abfed53fe3ca"), "no" : 11, "word" : "水" }

但我只想看:

write
first
water 

我该怎么做?谢谢

【问题讨论】:

    标签: c# mongodb


    【解决方案1】:

    由于我不知道您的数据是什么样的,因此我创建了自己的数据作为测试样本,以便您了解我如何使用投影来解决问题。如您所见,我创建了一个简单的测试集合调用簿,其中包含一个包含 Word 属性的文档。它还具有隐含的“_id”属性 我在 LINQPad 中创建了一个小示例应用程序来演示。

    // Define other methods and classes here
    class Book
    {
        public ObjectId _id { get; set; }
        public string Word { get; set; }
    }
    
    void Main()
    {
        var mongoConnectionString = @"mongodb://Topaz:p%40$$w0rd@localhost";
        var client = new MongoDB.Driver.MongoClient(mongoConnectionString);
        var db = client.GetDatabase("Test");
        var col = db.GetCollection<Book>("Books");
    
        var filter = Builders<Book>.Filter.Empty;
        var projection = Builders<Book>.Projection.Expression(m => m.Word);
        var options = new FindOptions<Book, String> { BatchSize = 256, Projection = projection };
    
        var results = new List<string>();
        using (var cursor = col.FindAsync(filter, options).Result)
        {
            while (cursor.MoveNextAsync().Result)
            {
                var batch = cursor.Current as IList<String>;
                results.AddRange(batch);
            }
        }
    
        results.ForEach(a => Console.WriteLine(a)); 
    }
    

    这是我得到的输出。

    富 酒吧

    我希望这对你有帮助。如果是这样,请标记我的答案并在评论中告诉我。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2020-03-16
      • 2016-06-29
      相关资源
      最近更新 更多