在聚合顺序中使用$$ ROOT

vpo*_*hok 13 mongodb aggregation-framework

我试着通过一些订单从集合中获取数据:

db.data.aggregate([
    {$limit: 1000},
    {$group: {
        _id: "$service",
        count: {$sum: 1},
        data: {$push: '$$ROOT'}
    }}
]);
Run Code Online (Sandbox Code Playgroud)

但得到下一个错误:

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
}
Run Code Online (Sandbox Code Playgroud)

我哪里做错了?

Nei*_*unn 13

因此,根据评论,你需要一个MongoDB版本2.6来做到这一点.但当然使用2.6这对我有用:

db.collection.aggregate([
    { "$limit": 1000 }, 
    { "$group": { 
        "_id": null, 
        "count": { "$sum": 1}, 
        "data": { "$push": "$$ROOT"  }
    }}
])
Run Code Online (Sandbox Code Playgroud)

  • 包名已更改!我只是更新10gen并获得v2.4.10.感谢名单! (3认同)