繁体   English   中英

MongoDB C#检索元素

[英]Mongodb c# retrieving element

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

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”:“ water”}

但我只想看:

write
first
water 

我怎样才能做到这一点? 谢谢

由于我不知道您的数据是什么样子,因此我创建了自己的测试样本,以便您可以看到如何使用投影来解决问题。 如您所见,我创建了一个简单的测试集合电话簿,其中包含一个文档,其中包含Word属性。 它还具有隐含的“ _id”属性 Studio 3T的视图 我在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)); 
}

这是我得到的输出。

Foo
Bar

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM