Database
[{_id:"uniquewId",programs:[{progress:"5",addedBy:"coach",exercises:[{date:"1/12/20",exercises:[{exId:"pushup",progress:5},{exId:"situp",progress:5},{exId:"pushup",progress:0}]},{date:"2/12/20",exercises:[{exId:"pushup",progress:5},{exId:"situp",progress:5},{exId:"pushup",progress:0}]}]},{progress:"5",addedBy:"coach2",exercises:[{date:"1/12/20",exercises:[{exId:"pushup",progress:5},{exId:"situp",progress:5},{exId:"pushup",progress:0}]},{date:"2/12/20",exercises:[{exId:"pushup",progress:5},{exId:"situp",progress:5},{exId:"pushup",progress:0}]}]}]}]
Query
db.collection.aggregate([{$unwind:"$programs"},{$match:{"programs.addedBy":"coach"}},{$project:{programs:{progress:"$programs.progress",addedBy:"$programs.addedBy",exercises:{$map:{input:"$programs.exercises",as:"exercise",in:{date:"$$exercise.date",exercises:{$filter:{input:"$$exercise.exercises",as:"exerciseDetails",cond:{$eq:["$$exerciseDetails.exId","pushup"]}}}}},}}}},{$group:{_id:"$_id",programs:{$push:"$programs"}}}])