【发布时间】:2020-05-01 10:16:43
【问题描述】:
我在使用 mongodb 聚合时遇到了一些问题。这是数据收集,
{
"subject":"maths",
"year" : "2018"
"marks" : [
{
"stuId" : "0001",
"mark" : "90"
},
{
"stuId" : "0002",
"mark" : "56"
}
]
}
{
"subject":"science",
"year" : "2018"
"marks" : [
{
"stuId" : "0001",
"mark" : "50"
},
{
"stuId" : "0002",
"mark" : "65"
}
]
}
我想计算每个学生的分数总和,然后取每个学生的平均值,如下所示,
//sum of maths and science subjects
{ "year" : "2018", "stuId" : "0001", "sum": "140"},
{ "year" : "2018", "stuId" : "0002", "sum": "121"}
我已经尝试过这段代码。没有任何结果。
mark.aggregate([
{
$match: {
"year": year
},
},
{ $unwind: "$marks" },
{
$group: {
"id": "$marks.stuId", "Total": { $sum: "$marks.mark" }
}
}
],
function (err, results) {
res.send(results)
console.log(results)
}
);
【问题讨论】:
-
清晰:您想要所有学生的分数总和和平均分数?
-
你有什么尝试吗?
-
@AlexBlex 我已经尝试过这段代码。 (问题已更新)
-
@BuzzMoschetti 是的。
-
由于错误,您没有结果。如果您在回调中检查“err”,它应该会说明在 $group 阶段缺少 _id。我相信你想写
$group: {"_id":.....}
标签: node.js mongodb aggregation