1

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

显示如何执行聚合。

将不胜感激一些帮助。谢谢。

4

1 回答 1

0

有两个问题。

1.) 您的收藏中有一些没有 serverName 的文档。你可以找到他们做 find({serverName:null})

2.) 你需要先 $unwind 数组

这是一个工作示例:

> 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
}
于 2012-04-10T14:57:34.240 回答