多组使用mongoose

我想要得到每个公司所有事件的总和。 这是我的数据:

{company: "1" event:"a"} {company: "1" event:"b"} {company: "1" event:"c"} {company: "2" event:"b"} {company: "2" event:"b"} {company: "3" event:"c"} {company: "3" event:"c"} 

我现在有这个聚合date的事件,但我正在努力进一步按公司分组:

 { "aggregate": [ { "$group": { "_id": "$event", "count": {"$sum": 1} } }, {"$sort": {"_id": 1}} ] } 

呈现这些结果的是:

[{“_id”:“a”,“count”:1},{“_id”:“b”,“count”:3},{“_id”:“c”,“count”:2}]

我怎样才能进一步按公司分组事件计数:

  [{ "_id": { "company" :"1", "events": [ { "event": "a", "count": 1 }, { "event": "b", "count": 1 }, { "event": "c", "count": 1 }, ] } }, { "_id": { "company" :"2", "events": [ { "event": "b", "count": 2 } ] } }, { "_id": { "company" :"3", "events": [ { "event": "c", "count": 2 } ] } } ] 

我已经在查询中尝试了各种进一步的组,但不能生成我之后的数据。 也有一个警告:我无法处理任何服务器端或更改架构,所以我只能通过查询,我希望可以做到。

       

网上收集的解决方案 "多组使用mongoose"

 db.collection.aggregate([ { $group:{ _id:{company:"$company",event:"$event"}, count:{$sum:1} } }, { $group:{ _id:"$_id.company", events:{$push:{event:"$_id.event",count:"$count"}} } } ]) 

如果你需要你提到的完全相同的输出然后添加$ project阶段

$项目:{_ ID:{公司: “$ _ ID” 事件: “$事件”}}