Database

[{"requestA":1,"requestB":1,"requestC":1,"user_id":1},{"requestA":1,"user_id":1},{"requestB":1,"user_id":1}]

Query

db.collection.aggregate([{$group:{"_id":{user_id:"$user_id"},requestA_count:{$sum:{$cond:[{$and:[{$ne:[{$type:"$requestA"},"missing"]},{$eq:[{$type:"$requestB"},"missing"]},{$eq:[{$type:"$requestC"},"missing"]}]},1,0]}},requestB_count:{$sum:{$cond:[{$ne:[{$type:"$requestB"},"missing"]},1,0]}},requestC_count:{$sum:{$cond:[{$ne:[{$type:"$requestC"},"missing"]},1,0]}}}},{$project:{_id:0,user_id:"$_id.user_id",requestA_count:1,requestB_count:1,requestC_count:1}}])

Result