[英]How to find the sum of values that are inside a nested array using mongodb aggregation?
我正在使用 node.js 並使用 Express 框架編寫腳本。 我正在使用雲 Mongodb 並且無法訪問 mongo shell,所以我無法輕松檢查 output。 我必須使用toArrray
將結果放入一個數組中,這樣我才能看到輸出的內容。 Console.log 有幫助,但有時當它是 object 時它只顯示[]
,盡管如果我檢查 Postman,我可以看到 object 中的屬性。
我有一個文檔,我一直在 mongodb 中發送一個聚合管道,此時我被卡住了,出現在res.send
中的 output 是這樣的:
[ { japanese_array: [ {"k": "japanese3a", "v": { "question": "japanese3a", "value": 100}},
{"k": "japanese3b", "v": { "question": "japanese3b", "value": 100}},
{"k": "japanese3c", "v": { "question": "japanese3c", "value": 100}} ] } ]
我想添加名為“值”的字段,因此所需的 output 只是一個數字(300)。
到達這一點需要很長時間,因為在 Stackoverflow 中遵循解決方案示例時遇到了很多麻煩,因為它們似乎使用了很多引號(例如“$project”),並且如果我在腳本中復制示例,包括引號,腳本不起作用。 我必須刪除 $project 等周圍的引號才能使事情正常工作。 我不明白為什么在某些詞周圍加上引號對其他人有用而對我無效。 我正在使用 mongodb 版本 4.2。
幾天來,我在 stackoverflow 中檢查了其他類似的問題,但沒有一個解決方案適合我。
最接近為我回答的問題來自這里: 如何對 MongoDB 的子文檔中的每個字段求和?
但它仍然不起作用。 我嘗試在$group
表達式中對"$japanese_array.v.value"
求和,但它不起作用,我被困在此處顯示的點上。
我解決了這個問題。
我對管道做了這個額外的階段:
{$project: {_id:0, "result":{$sum: "$japanese_array.v.value"}}}
兩天前我問了一個類似的問題,然后我得到了答案How do you sum the values within an object which is a nested subdocument in mongodb using node.js? 幫我在這里找到了解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.