我有一些类似于以下内容的文件:
{ 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
开始处理数组,但是我不知道如何从那里继续前进。
谢谢。
答案 0 :(得分:0)
这是@Anthony Winzlet在评论中给出的答案:
db.collection.aggregate([
{
$unwind: "$courses"
},
{
$group: {
_id: null,
average: {
$avg: "$courses.grade"
}
}
}
])
谢谢@Anthony Winzlet