嵌套文档MongoDB中的总和
我试图对文档数组中的一些值求和,但运气不好 这是文件 db.Cuentas.find().pretty() 所以,我需要所有的“蒙托”在“白鹭”中的总和,用于“乌萨里奥”:“马里奥卡斯”。在本例中154000 使用聚合,我使用以下方法:嵌套文档MongoDB中的总和,mongodb,sum,aggregation-framework,Mongodb,Sum,Aggregation Framework,我试图对文档数组中的一些值求和,但运气不好 这是文件 db.Cuentas.find().pretty() 所以,我需要所有的“蒙托”在“白鹭”中的总和,用于“乌萨里奥”:“马里奥卡斯”。在本例中154000 使用聚合,我使用以下方法: db.Cuentas.aggregate( [ { $match: {"Usuario": "MarioCares"} }, { $group: { _id: nu
db.Cuentas.aggregate(
[
{ $match: {"Usuario": "MarioCares"} },
{ $group:
{
_id: null,
"suma": { $sum: "$Egresos.Monto" }
}
}
]
)
但我总是会
{ "result" : [{ "_id" : null, "suma" : 0 }], "ok" : 1 }
我做错了什么
p.D.已经看到并且如Sammaye所示,您需要使用
Egresos
数组来复制每个数组元素的匹配文档,这样您就可以对每个元素执行$sum
:
db.Cuentas.aggregate([
{$match:{“Usuario”:“MarioCares”},
{$unwind:'$EGERSOS'},
{$group:{
_id:null,
“相扑”:{$sum:$Egresos.Monto}
}}
])
您也可以通过这种方式完成。不需要分组,只需投影字段即可
db.Cuentas.aggregate([
{ $match: { "Usuario": "MarioCares" } },
{
$project: {
'MontoSum': { $sum: "$Egresos.Monto" }
}
}
])
我相信您希望先解开
Egresos
数组,然后在null和sum@Sammaye添加了{“$unwind”:$Egresos},然后我得到了ReferenceError:Egresos未定义
您可以简化为在最新版本中使用以下代码对单个文档中的数组值求和。db.Cuentas.aggregate([{$match:{“Usuario”:“MarioCares”},{$project:{“suma”:{$sum:$Egresos.Monto”}}])
你能举个例子或片段吗?很抱歉@Aabid。它不起作用,因为我有一个稍微不同的场景,假设Egresos在同一个项目阶段也是一个变量……但它在这个问题的场景中起作用。@DagaArihant所以这对你问的问题起作用了?很抱歉,我的情况不同,我没有问问题。
db.Cuentas.aggregate([
{ $match: { "Usuario": "MarioCares" } },
{
$project: {
'MontoSum': { $sum: "$Egresos.Monto" }
}
}
])