Database
db={"invoices":[{"_id":1,"invNum":"123","ruleId":1,"createdDate":"12/12/2023","fileId":1},{"_id":2,"invNum":"446","ruleId":2,"createdDate":"12/12/2023","fileId":2},{"_id":3}],"rules":[{"_id":1,"name":"rule 1","createdDate":"12/13/2023"},{"_id":2,"name":"rule 2","createdDate":"12/13/2023"}],"files":[{"_id":1,"name":"file 1"},{"_id":2,"name":"file 2","createdDate":"12/13/2023"}]}
Query
db.invoices.aggregate([{$lookup:{from:"rules",localField:"ruleId",foreignField:"_id",as:"rules"}},{$unwind:"$rules"},{$lookup:{from:"files",localField:"fileId",foreignField:"_id",as:"files"}},{$unwind:"$files"},{$project:{invNum:1,name:1,ruleid:"$rules._id",ruleName:"$rules.name",fileName:"$files.name"}}])