为什么在mongodb聚合中对ObjectId进行双重分组我得到null?

时间:2014-02-06 14:26:14

标签: mongodb aggregation-framework

尝试做那样的双重分组(第二组意味着更少,但它只是作为一个例子):

db.statement.aggregate({
  $group: {
    _id: {o:"$object", v:"$verb"},
    c: {$sum: 1}
  },
  $group: {
    _id: "$_id.o",
    count: {$sum: "$c"}
  }
}).result

$ object和$ verb是ObjectIds。我得到了:

{
  "_id" : null,
  "count" : 0
}

为什么_id为空?

1 个答案:

答案 0 :(得分:0)

每个$ group阶段需要一个封闭的大括号 - 你的第二个$ group缺少封闭的花括号。尝试:

db.statement.aggregate( 
    { $group: { _id: {o:"$object", v:"$verb"}, c: {$sum: 1} } },  
    { $group: { _id: "$_id.o", count: {$sum: "$c"} } }
)