web-dev-qa-db-ja.com

集約順に$$ ROOTを使用する

私はいくつかの順序でコレクションからデータを取得しようとしています:

db.data.aggregate([
    {$limit: 1000},
    {$group: {
        _id: "$service",
        count: {$sum: 1},
        data: {$Push: '$$ROOT'}
    }}
]);

しかし、次のエラーが発生します。

Error("Printing Stack Trace")@:0
()@src/mongo/Shell/utils.js:37
([object Array])@src/mongo/Shell/collection.js:866
@(Shell):6

uncaught exception: aggregate failed: {
    "errmsg" : "exception: FieldPath field names may not start with '$'.",
    "code" : 16410,
    "ok" : 0
}

どこで私は間違えましたか?

14
vporoshok

したがって、コメントごとに、MongoDBバージョン2.6が必要です。これを実行してください。しかしもちろん、2.6を使用すると、これは私にとってはうまくいきます。

db.collection.aggregate([
    { "$limit": 1000 }, 
    { "$group": { 
        "_id": null, 
        "count": { "$sum": 1}, 
        "data": { "$Push": "$$ROOT"  }
    }}
])
15
Neil Lunn