1
你好朋友我不友好与mongodb聚合我想要的是,我有对象的数组,包含与每个问题的得分主题,我使用节点js,所以我想要的是用mongo查询完整计算如果可能的话,其中包括主题名称与尝试总得分和数量,而不是尝试我的JSON数组是波纹管总计逻辑值
{
"examId": ObjectId("597367af7d8d3219d88c4341"),
"questionId": ObjectId("597368207d8d3219d88c4342"),
"questionNo": 1,
"subject": "Reasoning Ability",
"yourChoice": "A",
"correctMark": "1",
"attempt": true,
"notAttempt": false,
}
在这里对象中的一个字段是正确标记主题是不同的我要像
输出|Subject Name | Total attempts | total not attempts | total score |
| A | 5 | 3 | 10 |
| B | 10 | 5 | 25 |
我正在尝试加agg但尚未完成我已尝试此查询
db.examscores.aggregate([
{ $group:{
_id:"$examId",
score: { $sum: '$correctMark' },
count: { $sum: 1 }
}}
])
任何人都有想法如何实现这种类型的输出。 如果用另一种方式来实现这个使用节点也比较好。
,您在您目前得到什么输出?你用''correctMark'你可以使用'$ attempt'类似的方法,你需要使用'$ cond'和'$ eq' –
我得到的总记录数为0,correctMark是我的包含用户给出的每个问题的分数的字段名称 – Kalpesh
您基本上正在查找['$ cond'](https://docs.mongodb.com/manual/reference/operator/aggregation/cond/)以返回' 1“或”0“,具体取决于已经存储的逻辑值,或者其他逻辑评估。你需要注意的是,由于你的文档当前站在''correctMark''实际上是持有“字符串”而不是数字值。如果你尝试使用'$ sum'和一个“字符串”,结果将始终为“0”。所以你需要修复你的数据作为一个优先事项。 –