Database

[{medicationDetails:{category:"Asthma",subCategory:"",providedBy:"Doctor"}},{medicationDetails:{category:"Diabetes",subCategory:"Oral",providedBy:"Nurse"}},{medicationDetails:{category:"Asthma",subCategory:"",providedBy:"Doctor"}},{medicationDetails:{category:"Diabetes",subCategory:"Insulin",providedBy:"Doctor"}}]

Query

db.collection.aggregate([{$project:{providedBy:"$medicationDetails.providedBy",key:{$cond:[{$eq:["$medicationDetails.subCategory",""]},"$medicationDetails.category","$medicationDetails.subCategory"]}}},{$group:{_id:"$key",providedByDoctor:{$sum:{$cond:[{$eq:["$providedBy","Doctor"]},1,0]}},providedByNurse:{$sum:{$cond:[{$eq:["$providedBy","Nurse"]},1,0]}}}},{$group:{_id:null,medicationDetails:{$push:{name:"$_id",providedByDoctorCount:"$providedByDoctor",providedByNurseCount:"$providedByNurse"}}}},{$unset:"_id"}])

Result