Database
db={"collection1":[{"name":"adafd","employeeId":"employeeId","locations":["abc","xyz"]}],"collection2":[{"_id":"abc","location":"india","states":[{"stateCode":"TN","districts":{"cities":[{"code":1,"name":"xxx"},{"code":4,"name":"zzz"},{"code":6,"name":"yyy"}]}},{"stateCode":"UP","districts":{"cities":[{"code":1,"name":"xxx"},{"code":4,"name":"zzz"},{"code":6,"name":"yyy"}]}}]}]}
Query
db.collection1.aggregate([{$lookup:{from:"collection2",localField:"locations",foreignField:"_id",as:"locations"}},{$project:{"details":{input:{$map:{input:"$locations",as:"location",in:{"_id":"$$location._id",location:"$$location.location",states:{$filter:{input:"$$location.states",as:"state",cond:{"$eq":["$$state.stateCode","TN"]}}}}}}}}}])