Database
db={"Users":[{"_id":ObjectId("3a9ccf7de6348936d88b3601"),"first_name":"John",},{"_id":ObjectId("3a9ccf7de6348936d88b3602"),"first_name":"Jane",}],"comments":[{"_id":ObjectId("3a9ccf7de6348936d88b3601"),"user_id":ObjectId("3a9ccf7de6348936d88b3601"),"body":"Hello World","replies":[{"_id":ObjectId("3a9ccf7de6348936d88b3441"),"user_id":ObjectId("3a9ccf7de6348936d88b3601"),"body":"World said, Hello Back"},{"_id":ObjectId("3a9ccf7de6348936d88b3442"),"body":"Stack said Overflow","user_id":ObjectId("3a9ccf7de6348936d88b3602")}]},{"_id":ObjectId("3a9ccf7de6348936d88b3602"),"user_id":ObjectId("3a9ccf7de6348936d88b3601"),"body":"Hello Stack","replies":[{"_id":ObjectId("3a9ccf7de6348936d88b3602"),"body":"Stack said Overflow","user_id":ObjectId("3a9ccf7de6348936d88b3601")}]}]}
Query
db.comments.aggregate([{$lookup:{from:"Users",let:{repliesUserId:"$replies.user_id",userId:"$user_id"},pipeline:[{$match:{$expr:{$or:[{$eq:["$_id","$$userId"]},{$in:["$_id","$$repliesUserId"]}]}}}],as:"user"}}])