Database
db={people:[{"_id":ObjectId("3a9ccf7de6348936d88b3601"),"first_name":"John","last_name":"Doe"},{"_id":ObjectId("3a9ccf7de6348936d88b3602"),"first_name":"Jane","last_name":"Doe"},{"_id":ObjectId("3a9ccf7de6348936d88b3603"),"first_name":"Bobby","last_name":"Doe"}],relations:[{"_id":ObjectId("5aa9a283e40f140014485116"),"person_id":ObjectId("3a9ccf7de6348936d88b3603"),"parent_id":ObjectId("3a9ccf7de6348936d88b3601"),"position":"father"},{"_id":ObjectId("5aa9a283e40f140014485117"),"person_id":ObjectId("3a9ccf7de6348936d88b3603"),"parent_id":ObjectId("3a9ccf7de6348936d88b3602"),"position":"mother"}]}
Query
db.people.aggregate([{$lookup:{from:"relations",let:{person_id:"$_id"},pipeline:[{$match:{$expr:{$eq:["$person_id","$$person_id"]}}},{$lookup:{from:"people",localField:"parent_id",foreignField:"_id",as:"person"}},{$replaceWith:{$mergeObjects:[{$arrayElemAt:["$person",0]},"$$ROOT"]}},{$project:{_id:"$parent_id",position:1,first_name:1,last_name:1}}],as:"relations"}}])