簡體   English   中英

如何使用 mongodb 聚合查找嵌套數組內的值的總和?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM