c#在MongoDB文档上使用投影

本文关键字:投影 文档 MongoDB | 更新日期: 2023-09-27 18:05:57

我试图仅从已展开的文档中获取几个值。

现在我得到了所有这些,但是我只想要"reviews"中的值

{ "_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();

如何只投射这些值?帮助将非常感激!

c#在MongoDB文档上使用投影

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

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字段。更多信息请参见聚合操作符$project。

上面的代码片段是使用MongoDB c# Driver v2.2, MongoDB v3.2和。net v4.5进行测试的