多组使用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 } ] } } ]
我已经在查询中尝试了各种进一步的组,但不能生成我之后的数据。 也有一个警告:我无法处理任何服务器端或更改架构,所以我只能通过查询,我希望可以做到。
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” 事件: “$事件”}}