C#使用MongoDB文档上的投影

时间:2016-09-06 14:34:42

标签: c# mongodb

我试图从已经展开的文档中获取一些值。

现在我得到了所有这些,但我只想要来自"评论"

的价值观
{ "_id" : ObjectId("57ced083857eda00e03b5a5e"), "name" : "Rest2", "reviews" : { "_id" : ObjectId("57ced083857eda00e03b5a60"), "rating" : 4, "date" : ISODate("2016-09-05T22:00:00Z") } }

我当前的聚合函数如下所示:

var coll = Database.GetCollection<Restaurant>("restaurants")
            .Aggregate()
            .Match(new BsonDocument { { "name", nameRest } })
            .Unwind(x => x.reviews);
        var result = await coll.ToListAsync();

您如何仅投影这些值?非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

根据您的示例,您可以使用如下项目:

var coll = Database.GetCollection<Restaurant>("restaurants")
        .Aggregate()
        .Match(new BsonDocument { { "name", nameRest } })
        .Unwind(x => x.reviews)
        .Project(new BsonDocument { {"rating", "$reviews.rating"} })

var result = await coll.ToListAsync();

上述示例的结果仅输出reviews.rating_id字段。有关详细信息,请参阅aggregation operator $project

上面的代码段使用MongoDB C# Driver v2.2,MongoDB v3.2和.Net v4.5进行了测试