我想获得给定属性值的集合中的平均值。我究竟做错了什么?
else
答案 0 :(得分:1)
您需要使用 $match
运算符过滤文档,即在 $group
运算符之前创建一个管道,该运算符将过滤所有文档基于给定城市价值的集合。
在前面的 $group
运算符管道中,您可以使用空键(由_id
字段表示)对上一个管道中的所有文档进行分组,获得累计平均值:
db.x.aggregate([
{ "$match": { "city": "Barcelona" } },
{ "$group": { "_id": null, "$avg": "$trips" } }
]);
另一种方法(不像上面那样最优)是通过城市密钥对集合中的所有文档进行分组,然后过滤:
db.x.aggregate([
{ "$group": { "_id": "$city", "$avg": "$trips" } },
{ "$match": { "_id": "Barcelona" } }
]);