我试图使用MongoDb中的聚合管道计算字段的平均值。
我在test
收集中的测试数据是:
[{ _id: aaaaa, aa: 3, bb: 4},
{ _id: bbbbb, aa: 5, bb: 6},
{ _id: ccccc, aa: 7, bb: 8}]
按照 MongoDB 网站上的说明进行操作:https://docs.mongodb.com/manual/reference/operator/aggregation/avg/
我将我的查询设计为:
db.getCollection('test').aggregate([ {$project: { AVGaabb: { $avg: ['$aa','$bb'] } } }])
然而,如果我在Robomongo中运行此查询,我会得到:
assert: command failed: {
"errmsg" : "exception: invalid operator '$avg'",
"code" : 15999,
"ok" : 0
} : aggregate failed
我是否理解$ avg查询错误?
答案 0 :(得分:1)
在版本3.2中,$ avg在$ group和$ project阶段可用。在早期版本的MongoDB中,$ avg仅在$ group阶段可用。
因此,如果您使用以前的版本,则必须创建$ group阶段而不是$ project阶段。
我在我的一个mongos(3.2.7)中测试过:
> db.stackoverflow.aggregate([{$project:{ "AVGaabb": { $avg: ["$aa","$bb"] }}}])
{ "_id" : ObjectId("578fa20574b924681b055c95"), "AVGaabb" : 3.5 }
{ "_id" : ObjectId("578fa20b74b924681b055c96"), "AVGaabb" : 5.5 }
{ "_id" : ObjectId("578fa21074b924681b055c97"), "AVGaabb" : 7.5 }