Database
db={shops:[{id:1,zipcodes:["12345","11111",]},{id:2,zipcodes:["45678",]}],customers:[{id:20,name:"First Last",address:[{id:110,address:"address line1",zipcode:"12345",},{id:111,address:"address new",zipcode:"45678",}]},{id:25,name:"First Last2",address:[{id:113,address:"address new",zipcode:"45678",},]},{id:29,name:"First Name",address:[{id:119,address:"address liner",zipcode:"11111",},{id:120,address:"address new2",zipcode:"12345",}]}]}
Query
db.shops.aggregate([{$unwind:"$zipcodes"},{$lookup:{from:"customers",let:{zipcodes:"$zipcodes"},pipeline:[{$match:{$expr:{"$in":["$$zipcodes","$address.zipcode"]}}},{$project:{_id:0,id:1}}],as:"customers"}},{$project:{_id:0,zipcodes:1,customers:1}}])