Database

db={"products":[{"uid":"p1","name":"pname1","published":true},{"uid":"p2","name":"pname2","published":true},{"uid":"p3","name":"pname2","published":true}],"stores":[{"uid":"s1","name":"sname1","published":true},{"uid":"s2","name":"sname2","published":true}],"storemapping":[{"entityId":"p1","entityName":"product","storeId":"s2"},{"entityId":"p2","entityName":"product","storeId":"s1"},{"entityId":"p3","entityName":"product","storeId":"s2"}]}

Query

db.products.aggregate([{$lookup:{from:"storemapping",localField:"uid",foreignField:"entityId",let:{productId:"$uid"},as:"storemapping",pipeline:[{$match:{"$and":[{storeId:"s1"},{$expr:{$eq:["$entityId","$$productId"]}}]}}]}},{$match:{storemapping:{$ne:[]}}},{$project:{storemapping:0}}])

Result