我有一个 Mongo 数据库,我在其中运行一些聚合查询。这是我要运行的简化查询:
db.coll.aggregate([
{ $group: {
_id: 'fieldA',
fieldB: { $avg: '$fieldB' }
} },
])
它按字段 A 对数据进行分组并计算字段 B 的平均值。无论如何,结果集中的某些行将 0 作为 fieldB 的值。这可能有两个原因:
- 平均值为 0。
- 组中的所有文档都没有 fieldB(或 null 作为值);在这种情况下,Mongo 的行为是返回 0。
是否可以在不发出其他查询且不离开聚合管道的情况下确定结果选择中每一行发生的情况?
更新
我无法过滤掉非空字段,因为我正在对几个字段进行聚合,例如:
db.coll.aggregate([
{ $group: {
_id: 'fieldA',
fieldB: { $avg: '$fieldB' },
fieldC: { $avg: '$fieldC' }
} },
])
一些文档可能有 fieldB 但没有 fieldC,反之亦然。