Database

[{"_id":1,"channel":"fb","store":"store1"},{"_id":2,"channel":"app","store":"store2"},{"_id":3,"channel":"sms","store":"store3"},{"_id":4,"channel":"fb","store":"store4"},{"_id":5,"channel":"app","store":"store3"},{"_id":6,"channel":"app","store":"store2"},{"_id":7,"channel":"sms","store":"store1"},{"_id":8,"channel":"fb","store":"store4"},{"_id":9,"channel":"app","store":"store2"},{"_id":10,"channel":"fb","store":"store2"},]

Query

db.collection.aggregate([{$group:{"_id":{"store":"$store","channel":"$channel"},count:{$sum:1}}},{$group:{_id:"$_id.store",channels:{$push:{k:"$_id.channel",v:"$count"}}}},{$addFields:{channels:{$arrayToObject:{$concatArrays:["$channels",[{k:"totalCount",v:{$sum:"$channels.v"}}]]}}}},{$project:{_id:0,store:"$_id",fbCount:{$ifNull:["$channels.fb",0]},smsCount:{$ifNull:["$channels.sms",0]},appCount:{$ifNull:["$channels.app",0]},totalCount:{$ifNull:["$channels.totalCount",0]}}}])

Result