MongoDB中的简单$ avg

时间:2016-07-20 15:32:50

标签: mongodb

我试图使用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查询错误?

1 个答案:

答案 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 }