【发布时间】:2017-06-23 12:10:22
【问题描述】:
我正在使用 mongo 3.0.4 通过键对数据进行分组。假设我们有一些 mongo 文档,比如
{'a': 1, 'b': 2, 'name': 'leo'}
{'a': 1, 'b': 2, 'name': 'leo'}
{'a': 2, 'b': 2, 'c': 0, 'name': 'amy'}
{'a': 2, 'b': 2, 'c': 0, 'name': 'amy'}
我尝试通过键“名称”聚合并使用下面的代码对所有 a、b、c 字段求和
[
{
'$group': {
'_id': '$name',
'a': {
'$sum': '$a'
},
'b': {
'$sum': '$b'
},
'c': {
'$sum': '$c'
}
}
}
]
得到这样的结果
[
{
'_id': 'leo',
'a': 2,
'b': 4,
'c': 0
},
{
'_id': 'amy',
'a': 4,
'b': 4,
'c': 0
}
]
问题是 leo 组中的“c”字段也是 0,我希望它为空。 预期的结果应该是
[
{
'_id': 'leo',
'a': 2,
'b': 4,
'c': null
},
{
'_id': 'amy',
'a': 4,
'b': 4,
'c': 0
}
]
或
[
{
'_id': 'leo',
'a': 2,
'b': 4
},
{
'_id': 'amy',
'a': 4,
'b': 4,
'c': 0
}
]
我知道$sum 运算符将无数字字段视为 0,那么有什么方法可以做到这一点吗?使用 sum 运算符时如何区分 null 和 0?
【问题讨论】:
-
我猜你无法在单个查询中实现这一点。您必须将查询分成两部分。
-
有没有机会在一个管道中实现?比如使用匹配,项目...
标签: mongodb aggregation-framework