2016-07-20 3 views
0

MongoDbの集約パイプラインを使ってフィールドの平均を計算しようとしています。 test collecitonで

私のテストデータは次のとおりです。

[{ _id: aaaaa, aa: 3, bb: 4}, 
{ _id: bbbbb, aa: 5, bb: 6}, 
{ _id: ccccc, aa: 7, bb: 8}] 

MongoBDサイトの指示に従い: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

バージョン3.2 $ avgは$ groupステージと$ projectステージで利用できます。 MongoDBの以前のバージョンでは、$ avgは$ groupステージでのみ利用可能です。

以前のバージョンを使用している場合は、$ projectステージの代わりに$ groupステージを作成する必要があります。

私は私のmongosの1(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 } 
+0

私はコン上でDBをホスティングしていて、バージョンが3.2.7 ..ですしかし、私はから集計を呼んでいますRobomongoクライアント接続。ロボモゴのせいかもしれない? –

+0

コマンドプロンプトまたはターミナル – chf

+0

Aaahhを使用してmongoclientを実行してみます。ありがとう。あなたは正しいところです。私はV3.0であるmodulus上でこのDBを実行しています。そしてV3.2であるcompose DBでそれをテストしたところ、うまくいきました。ありがとう。 –