0

我有一组类似于这些的文档:

{ student_id : 13,
     courses : [
          { name : "Topology" , grade : 9 }, 
           { name : "Calculus", grade : 10}
          ]}
 },

{ student_id : 45,
     courses : [
          { name : "Geology" , grade : 7 }, 
           { name : "Architecture", grade : 8}
          ]}
 }

现在,假设我想计算所有学生的所有单项成绩的平均值(所以如果以上是整个集合,我们将查看 9、10、7 和 8 的平均值)

我正在尝试使用aggregate(). 我知道我必须从$unwinding 数组开始,但我不明白如何从那里继续。

谢谢。

4

1 回答 1

0

这是@Anthony Winzlet 在评论中给出的答案:

db.collection.aggregate([
  {
    $unwind: "$courses"
  },
  {
    $group: {
      _id: null,
      average: {
        $avg: "$courses.grade"
      }
    }
  }
])

谢谢@Anthony Winzlet

于 2019-05-15T06:48:54.510 回答