1

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

[
 { "_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" },
        ... 
]
4

1 回答 1

1

使用 mongo shell,尝试以下操作,将“collecttionname”更改为您餐厅收藏的名称

 db.collectionname.aggregate( { '$unwind' : '$grades' } , { '$group' : { '_id' : '$_id' , 'average' : { $avg : '$grades.score' } } } , { '$sort' : { 'average' : -1 } } , { '$limit' : 1 } )
于 2016-02-01T12:10:08.010 回答