Roy*_*nik 13 mongodb pymongo aggregation-framework
我有一个包含字段类型,totalA和totalB的文档的集合
我想使用聚合框架以按类型分组 - 并将totalA和totalB的总和加在一起.
我尝试的最后一件事(不起作用)是:
'$group' : {
'_id' : '$type',
'totalA' : { '$sum' : '$totalA' },
'totalB' : { '$sum' : '$totalB' },
'totalSum' : { '$sum' : '$totalA', '$sum' : '$totalB' },
} }
Run Code Online (Sandbox Code Playgroud)
totalSum只有一个字段的总和而不是组合值.
Roy*_*nik 34
我找到了解决方案:
只需使用$ project将$两个字段添加到输出中.
{ "$project" : {
'totalA' : '$totalA',
'totalB' : '$totalB',
'totalSum' : { '$add' : [ '$totalA', '$totalB' ] },
}
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以通过$sum以下方式使用:
{
$group : {
_id: null,
amount: { $sum: { $add : [
'$NumberOfItemsShipped', '$NumberOfItemsUnshipped'
]}},
}
},
Run Code Online (Sandbox Code Playgroud)
除了此处的答案之外$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] }
]
}
},
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13378 次 |
| 最近记录: |