【发布时间】:2021-10-06 12:56:55
【问题描述】:
我有使用 MongoDB 的学生评分系统。我在 MongoDB 中有以下文档:
我如何获取特定subject 获得grade "A","B","C","D" 的学生人数。每个主题的“_id”保持不变。
{
_id: "60b223541338467beaf3ae0d",
studentName: "John Doe"
studentGradingDetails: [
{
_id: "60b21e47e5462929cab27a98",
term: "semester-1",
subject: "chemistry",
grade: "A",
createdAt: "2021-05-29T10:58:15.113Z",
},
{
_id: "60b21e47e5462929cab27a99",
term: "semester-2",
subject: "computer_science",
grade: "B",
createdAt: "2021-05-29T10:58:15.113Z",
},
],
createdAt: "2021-05-29T11:19:48.770Z",
}
{
_id: "60b223541338467beaf3ae0e",
studentName: "Will Smith"
studentGradingDetails: [
{
_id: "60b21e47e5462929cab27a98",
term: "semester-1",
subject: "chemistry",
grade: "D",
createdAt: "2021-05-29T10:58:15.113Z",
},
{
_id: "60b21e47e5462929cab27a99",
term: "semester-2",
subject: "computer_science",
grade: "A",
createdAt: "2021-05-29T10:58:15.113Z",
},
],
createdAt: "2021-05-29T11:19:48.770Z",
}
这是我尝试并坚持的,不知道接下来的步骤是什么!?
await db.collection("studentsemestergrades")
.aggregate([
{ $unwind: "$studentGradingDetails" },
{
$group: {
_id: "$studentGradingDetails._id",
},
},
])
.toArray();
预期输出:
每个科目得分不同的学生分布(_id)
{
"_id" : "60b21e47e5462929cab27a98",
"A" : 12,
"B" : 20,
"C" : 8,
"D" : 2
},
{
"_id" : "60b21e47e5462929cab27a99",
"A" : 5,
"B" : 2,
"C" : 8,
"D" : 12
}
【问题讨论】:
标签: node.js mongodb aggregate-functions