Database
db={"col1":[{"_id":"AAA1","name":"rootObj1","subObjects":["BBB1","BBB2"]},{"_id":"AAA2","name":"rootObj2","subObjects":[]}],"col2":[{"_id":"BBB1","name":"subObjectName1","subSubObjects":["CCC1","CCC2"]},{"_id":"BBB2","name":"subObjectName2","subSubObjects":["CCC2"]}],"col3":[{"_id":"CCC1","name":"nameToFind"},{"_id":"CCC2","name":"someOtherName"}]}
Query
db.col1.aggregate([{"$match":{"name":"rootObj1"}},{$lookup:{from:"col2",let:{subObjects:"$subObjects"},pipeline:[{$match:{$expr:{$in:["$_id","$$subObjects"]}}},{$lookup:{from:"col3",localField:"subSubObjects",foreignField:"_id",as:"subSubObjects"}}],as:"subObjects"}}])