Database
db={"things":[{"_id":ObjectId("5a7241f7912cfc256468cb27"),"name":"Fortress of Solitude","alias":"fortress_of_solitude"},{"_id":ObjectId("5a7247ec548c9ad042f579e2"),"name":"Batcave","alias":"batcave"},{"_id":ObjectId("5a7247ec548c9ad042f57911"),"name":"Entrance","alias":"entrance"}],"venues":[{"_id":ObjectId("5b9acabbbf71f39223f8de6e"),"name":"The Office","floors":[{"name":"1st Floor","places":[{"name":"Front Entrance","alias":"front_entrance"}]},{"name":"2nd Floor","places":[{"name":"Batcave","alias":"batcave"}]}]},{"_id":ObjectId("5b9acabbbf71f39223f8de11"),"name":"The Office2","floors":[{"name":"1st Floor","places":[{"name":"Front Entrance","alias":"front_entrance"},{"name":"Entrance","alias":"entrance"}]},{"name":"2nd Floor","places":[{"name":"Batcave","alias":"batcave"}]},{"name":"3nd Floor","places":[{"name":"Entrance","alias":"entrance"}]}]}]}
Query
db.things.aggregate([{$lookup:{from:"venues",let:{alias:"$alias"},pipeline:[{$unwind:{path:"$floors",preserveNullAndEmptyArrays:true}},{$match:{$expr:{$in:["$$alias","$floors.places.alias"]}}},{$addFields:{"floors.places":{$filter:{input:"$floors.places",cond:{$eq:["$$this.alias","$$alias"]}}}}},{$group:{_id:"$_id",name:{$first:"$name"},floors:{$push:"$floors"}}},{$project:{"floors.places.alias":1,_id:0}}],as:"matches"}}])