Database
db={"things":[{"_id":ObjectId("5a7241f7912cfc256468cb27"),"name":"Fortress of Solitude","alias":"fortress_of_solitude",},{"_id":ObjectId("5a7247ec548c9ad042f579e2"),"name":"Batcave","alias":"batcave",},{"_id":ObjectId("6a7247bc548c9ad042f579e8"),"name":"Oz","alias":"oz",}],"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"},{"name":"Oz","alias":"oz"}]}]}]}
Query
db.things.aggregate([{$lookup:{from:"venues",let:{"alias":"$alias"},pipeline:[{$unwind:"$floors"},{$project:{_id:0,places:{$filter:{input:"$floors.places",cond:{$eq:["$$alias","$$this.alias"]}}}}},{$match:{"places.0":{$exists:true}}},{$unset:"places.name"}],as:"floors"}}])