2012-04-06 33 views
1

蒙戈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

显示了如何执行聚合。

希望得到一些帮助。谢谢。

回答

0

有两个问题。

1.)您有一些文档在您的集合中没有serverName。你可以找到他们做了查找({服务器名:空})

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 
} 
+0

感谢,伟大的答案。这比执行某种形式的map/reduce来做同样的事情要快吗?如果我想将它输出到一个新的集合,那么$ out就会被使用,因为我尝试了这一点,但它不起作用。 – sam0673 2012-04-14 00:20:30

+0

聚合框架没有发布,也没有完成,$ out尚未实现 - 请观看此问题:https://jira.mongodb.org/browse/SERVER-3253 – 2012-04-14 18:07:06