2012-10-14 103 views
3

假设我们有这样的文档集合

{ 
    _id: { 
     element_id: '12345', 
     name: 'foobar' 
    }, 
    value: { 
     count: 1 
    } 
} 

我使用的聚合框架做了$group中,像这样

db.collection.aggregate([ 
    { $group: { _id: '$_id.element_id', total: { $sum: '$value.count' } } } 
]) 

,并得到了结果

{ "result" : [ { "_id" : null, "total" : 1 } ], "ok" : 1 } 

请注意,结果中的210字段为空。从实验看来,$ group似乎不允许其_id(例如$_id.element_id)的嵌套字段声明。

这是为什么?有没有解决方法?

谢谢。

+0

究竟应该显示什么结果?什么应该在$ _id上。您是否尝试添加{$ group:{_id:'$ _id',总计:... –

+0

对不起,我添加了详细信息。我也自己找到了答案,我将发布。但是如果你有任何补充,请不要犹豫。 – airportyh

回答

3

这原来一直问题SERVER-7491。它似乎已在2.2.2(3天前发布)中得到修复。

上述解决方法在2.2.1中对我很有效。需要注意的是,当使用$ project解决方案(2.2.2之前的版本)时,如果不包含_id与_id:0的$项目是不可取的,因为它似乎表现得很奇怪,所以我最终得到了一些正常工作,并且其中一部分_id字段在同一个聚合中的最终结果中缺失。