我试图从已经展开的文档中获取一些值。
现在我得到了所有这些,但我只想要来自"评论"
的价值观{ "_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();
您如何仅投影这些值?非常感谢帮助!
答案 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进行了测试