MongoDB-计算整个集合中数组元素的平均值

时间:2019-05-14 18:50:26

标签: mongodb aggregation-framework

我有一些类似于以下内容的文件:

{ 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的平均值)< / p>

我正在尝试使用aggregate()来做到这一点。我知道我必须$unwind开始处理数组,但是我不知道如何从那里继续前进。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

谢谢@Anthony Winzlet