【发布时间】:2016-05-31 15:45:48
【问题描述】:
我在 MongoDB 3.2 上运行了一些聚合查询。 我想按一个字段对另一个数字字段的平均值进行分组。 我需要平均值来忽略 0 值。 问题是我无法完全过滤文档,因为我需要另一个字段来计数。
让我们举例说明:
这是我的文档的结构:
{"stringToGroupByOn":"foo", "valueToAvg":42, "valueToSum":21}
{"stringToGroupByOn":"foo", "valueToAvg":0, "valueToSum":13}
我不能像这样过滤:
db.foobar.aggregate([
{
$match : { valueToAvg : { $gt : 0 } }
},
{
$group : {
_id : '$stringToGroupByOn',
avg : { $avg : '$valueToAvg' },
count : { $sum : '$valueToSum' }
}
}
])
因为我失去了计数值 13。
你认为有一种方法可以只在一个查询中完成吗?
【问题讨论】:
-
我们有什么 mongo 版本?
-
抱歉我忘了说:3.2版
标签: mongodb aggregation-framework