2016-09-06 86 views
0

我试图从已经展开的文档中只获取几个值。在MongoDB文档中使用投影的C#

现在我得到了这一切,但我只从“评论”

{ "_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

根据你的榜样,您可以使用项目象下面这样:

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

+0

谢谢!这比我所做的要简单得多,而且效果很好 – RandomStranger