MongoDB 并聚合嵌入文档

MongoDB and aggragate the embeded document

我是 mongoDB 的新手,我遇到了一个问题。数据是根据官方文档导入的。
如您所见,每个餐厅都有一个等级数组,嵌套文档包含一个分数字段。我想做的是根据每个餐厅等级的平均分,检索平均分最高的餐厅。这可能需要使用mongoDB的聚合方法,但是文档没有涵盖嵌套文档的情况,我搜索了但没有结果。本站有similar question,但不是很清楚

[
 { "_id" : ObjectId("56a9f39cae1902590811dffc"), 
 "address" : { "building" : "284", 
               "coord" : [ -73.9829239, 40.6580753 ], 
               "street" : "Prospect Park West", 
               "zipcode" : "11215" }, 
 "borough" : "Brooklyn", 
 "cuisine" : "American ", 
 "grades" : [ { "date" : ISODate("2014-11-19T00:00:00Z"), "grade" : "A", "score" : 11 }, 
              { "date" : ISODate("2013-11-14T00:00:00Z"), "grade" : "A", "score" : 2 }, 
              { "date" : ISODate("2012-12-05T00:00:00Z"), "grade" : "A", "score" : 13 }, 
              { "date" : ISODate("2012-05-17T00:00:00Z"), "grade" : "A", "score" : 11 } ], 
 "name" : "The Movable Feast", 
 "restaurant_id" : "40361606" },
        ... 
]

使用 mongo shell,尝试以下操作,将 "collecttionname" 更改为您的餐厅系列名称

 db.collectionname.aggregate( { '$unwind' : '$grades' } , { '$group' : { '_id' : '$_id' , 'average' : { $avg : '$grades.score' } } } , { '$sort' : { 'average' : -1 } } , { '$limit' : 1 } )