【发布时间】:2021-05-19 01:15:13
【问题描述】:
我正在使用 node.js 并使用 Express 框架编写脚本。我正在使用云 Mongodb 并且无法访问 mongo shell,所以我无法轻松检查输出。我必须使用toArrray 函数将结果放入一个数组中,这样我才能看到输出的内容。 Console.log 有帮助,但有时当它是一个对象时它只显示 [],尽管如果我检查 Postman,我可以看到对象内的属性。
我有一个文档,我一直在 mongodb 中发送一个聚合管道,此时我被卡住了,res.send 中出现的输出是这样的:
[ { japanese_array: [ {"k": "japanese3a", "v": { "question": "japanese3a", "value": 100}},
{"k": "japanese3b", "v": { "question": "japanese3b", "value": 100}},
{"k": "japanese3c", "v": { "question": "japanese3c", "value": 100}} ] } ]
我想添加名为“值”的字段,因此所需的输出只是一个数字 (300)。
到达这一点花了很长时间,因为在 Stackoverflow 中遵循解决方案示例时遇到了很多麻烦,因为它们似乎使用了很多引号(例如“$project”),如果我复制示例在我的脚本中,包括引号,脚本不起作用。我必须删除 $project 等周围的引号才能使事情正常工作。我不明白为什么在某些词周围加上引号对其他人有用而对我无效。我使用的是 mongodb 4.2 版。
我已经在 stackoverflow 中检查了其他类似的问题好几天了,但没有一个解决方案适合我。
最接近为我回答的来自这里:How to sum every fields in a sub document of MongoDB?
但它仍然不起作用。我尝试在 $group 表达式中对 "$japanese_array.v.value" 求和,但它不起作用,我被困在此处显示的点上。
【问题讨论】:
标签: javascript arrays mongodb nested sum