我正在尝试根据MongoDB中的列值work.type的类型获取字段'score.number‘的总和。它应该将“hw”的总和取为25,并将“cw”取为5作为学生“A”的单个输出。有没有办法使用mongodb查询来实现它?我也尝试过$group,但它似乎不能针对单个学生记录'A‘获取工作类型和每个工作类型的总和。

预期输出:

发布于 2021-09-17 09:52:52
在使用$match之后,您应该像这样使用$group
db.collection.aggregate([
{
$match: {
student: {
$in: [
"A"
]
},
"work.type": {
$in: [
"hw",
"cw"
]
}
}
},
{
"$group": {
"_id": {
"worktype": "$work.type",
"student": "$student"
},
"workScore": {
"$sum": "$score.number"
}
}
}
])发布于 2021-09-17 09:56:40
可以用这两个得到总和
$match{
'student': {'$in': ['A']},
"work.type": {'$in': ['hw', 'cw']},
}紧接着是
$group
{
_id: '$work.type',
totalAmount: { $sum: "$score.number" },
}发布于 2021-09-17 10:26:10
$match {'student': {
$in: [
"A"
]
},
"work.type": {
$in: [
"hw",
"cw"
]
}}
followed by
$group {
"_id": {
"worktype": "$work.type",
"student": "$student"
},
"workScore": {
"$sum": "$score.number"
}
}
followed by
$group {"_id": {
"student": "$_id.student"
},
'list': {'$push': {'worktype':"$_id.worktype", 'workScore': "$workScore" }},
} 已求解的输出:

解决了问题。
https://stackoverflow.com/questions/69220530
复制相似问题