Database

db={Shops:[{"name":"Shop A","countries":[{"name":"Germany","cities":[{"name":"Berlin","districts":[{"name":"First District","products":[1,2,3]}]}]}]}],Products:[{"uid":1,"name":"Banana"},{"uid":2,"name":"Apple"},{"uid":2,"name":"Peach"}]}

Query

db.Shops.aggregate([{$lookup:{from:"Products",localField:"countries.cities.districts.products",foreignField:"uid",as:"res"}},{$project:{countriesA:{$map:{input:"$countries",as:"country",in:{$mergeObjects:["$$country",{cities:{$map:{input:"$$country.cities",as:"city",in:{$mergeObjects:["$$city",{districts:{$map:{input:"$$city.districts",as:"district",in:{$mergeObjects:["$$district",{products:{$map:{input:"$$district.products",in:{$arrayElemAt:["$res",{$indexOfArray:["$res.uid","$$this"]}]}}}}]}}}}]}}}}]}}}}}])

Result