Database
db={"items":[{"_id":"i1","project":"p1","workspace":"workspaceId1","type":"type1","deleted":false},{"_id":"i2","project":"p1","workspace":"workspaceId1","type":"type1","deleted":true},{"_id":"i3","project":"p1","workspace":"workspaceId1","type":"type2","deleted":false},{"_id":"i4","project":"p2","workspace":"workspaceId1","type":"type1","deleted":false},{"_id":"i5","project":"p3","workspace":"workspaceId2","type":"type1","deleted":false},{"_id":"i6","project":"p3","workspace":"workspaceId2","type":"type3","deleted":true},{"_id":"i7","project":"p1","workspace":"workspaceId1","type":"type3","deleted":false}]}
Query
db.items.aggregate([{$match:{"deleted":false,"workspace":"workspaceId1"}},{$group:{_id:"$project",itemType1Count:{$sum:{"$cond":{"if":{$eq:["$type","type1"]},"then":1,"else":0}}},itemType2Count:{$sum:{"$cond":{"if":{$eq:["$type","type2"]},"then":1,"else":0}}},itemType3Count:{$sum:{"$cond":{"if":{$eq:["$type","type3"]},"then":1,"else":0}}}}}])