我有一个包含字段类型,totalA和totalB
的文档的集合我想使用聚合框架按类型分组 - 并将totalA和totalB的总和加在一起。
我尝试的最后一件事(不起作用)是:
'$group' : {
'_id' : '$type',
'totalA' : { '$sum' : '$totalA' },
'totalB' : { '$sum' : '$totalB' },
'totalSum' : { '$sum' : '$totalA', '$sum' : '$totalB' },
} }
totalSum只有一个字段而不是合并值的总和。
答案 0 :(得分:30)
我找到了解决方案:
只需使用$ project将$两个字段添加到输出中。
{ "$project" : {
'totalA' : '$totalA',
'totalB' : '$totalB',
'totalSum' : { '$add' : [ '$totalA', '$totalB' ] },
}
答案 1 :(得分:4)
您可以这样使用$ sum:
{
$group : {
_id: null,
amount: { $sum: { $add : [ '$NumberOfItemsShipped', '$NumberOfItemsUnshipped' ] }},
}
},
答案 2 :(得分:3)
除了此处的answer之外,当某些文档中没有键时,$add
还会提供错误的值。
例如,如果Col3
和Col4
键有时是not present/ undefined
,那么在$ifNull
下面将有帮助:
{
$group : {
_id: {
"Col1": "$Col1",
"Col2": "$Col2"
},
sum_of_all_days_in_year: {
$sum: {
"$add": [
{ "$ifNull": ["$Col3", 0] },
{ "$ifNull": ["$Col4", 0] }
]
}
},
}
}