Database
db={"school":[{_id:ObjectId("60008e81d186a82fdc4ff2b7"),name:"String",branch:"String",class:[{"active":true,"_id":ObjectId("6001e6871d985e477b61b43f"),"name":"I","order":1},{"active":true,"_id":ObjectId("6001e68f1d985e477b61b444"),"name":"II","order":2}]}],"student":[{_id:ObjectId("6002def815eccd53a596f830"),schoolId:ObjectId("60008e81d186a82fdc4ff2b7"),sessionId:ObjectId("60008e81d186a82fdc4ff2b9"),class:ObjectId("6001e6871d985e477b61b43f")}]}
Query
db.student.aggregate([{$lookup:{from:"school",let:{schoolId:"$schoolId",classId:"$class"},pipeline:[{$match:{$expr:{$eq:["$$schoolId","$_id"]}}},{$replaceRoot:{newRoot:{$arrayElemAt:[{$filter:{input:"$class",cond:{$eq:["$$this._id","$$classId"]}}},0]}}}],as:"classData"}}])