Mongodb - 在v2.1.0中使用$ group执行求和

时间:2012-04-06 08:48:33

标签: mongodb aggregation-framework

Mongo DB - 数据聚合(在MongoDB 2.1.0中 - 不稳定版本):

db.test.save({serverName:'abc123', info:[12,43,23,10]});

db.test.save({serverName:'abc123', info:[12,22,19,11]});

db.test.aggregate({$group:{_id:"$serverName", infoTotal:{ $sum : "$info"}}});

Response: "errmsg" : "exception: the _id field for a group must not be undefined",

不确定我做错了,例如:http://www.mongodb.org/display/DOCS/Aggregation+Framework+-+%24group

显示了如何执行聚合。

非常感谢一些帮助。感谢。

1 个答案:

答案 0 :(得分:0)

有两个问题。

1。)您的某些文档在您的集合中没有serverName。您可以找到他们进行查找({serverName:null})

2。)你需要首先解开数组

以下是一份工作样本:

> db.agg1.find()
{ "_id" : 1, "serverName" : "abc123", "info" : [ 12, 43, 23, 10 ] }
{ "_id" : 2, "serverName" : "abc124", "info" : [ 12, 22, 19, 11 ] }
{ "_id" : 3, "serverName" : "abc124", "info" : [ 1, 25, 2, 11 ] }

> db.agg1.aggregate({$unwind: "$info"},{$group:{_id:"$serverName", infoTotal:{ $sum : "$info"}}});
{
        "result" : [
                {
                        "_id" : "abc123",
                        "infoTotal" : 88
                },
                {
                        "_id" : "abc124",
                        "infoTotal" : 103
                }
        ],
        "ok" : 1
}