Database

db={user:[{_id:ObjectId("61ca9490192add08fa385aeb"),name:"Andrew"},{_id:ObjectId("71ca9490192add08fa385aec"),name:"James"}],leave:[{_id:ObjectId("6262851ab059b81fd9076532"),user:ObjectId("21ca9490192add08fa385aec"),status:"pending"}],leaveapprovals:[{leave:ObjectId("6262851ab059b81fd9076532"),auditUser:ObjectId("61ca9490192add08fa385aeb"),role:"recommender"},{leave:ObjectId("6262851ab059b81fd9076532"),auditUser:ObjectId("71ca9490192add08fa385aec"),role:"approver"}]}

Query

db.leave.aggregate([{$lookup:{from:"leaveapprovals",let:{leaveId:"$_id"},pipeline:[{$match:{$expr:{$eq:["$$leaveId","$leave"]}}},{$lookup:{from:"user",localField:"auditUser",foreignField:"_id",as:"auditUser"}},{$project:{auditUser:1,role:1}}],as:"approverRecommender"}},{"$set":{approver:{"$first":{"$filter":{"input":"$approverRecommender","cond":{$eq:["$$this.role","approver"]}}}},recommender:{"$first":{"$filter":{"input":"$approverRecommender","cond":{$eq:["$$this.role","recommender"]}}}}}},{"$set":{approver:{"$first":{"$filter":{"input":"$approverRecommender","cond":{$eq:["$$this.role","approver"]}}}},recommender:{"$first":{"$filter":{"input":"$approverRecommender","cond":{$eq:["$$this.role","recommender"]}}}}}},{$project:{_id:1,user:1,status:1,"approver":{$first:"$approver.auditUser"},"recommender":{$first:"$recommender.auditUser"}}}])

Result