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」。所以你需要修復你的數據作爲一個優先事項。 –