Database

db={"instances":[{id:10,operatingSystem:"Microsoft Windows 2012R2",version:"3.1.5",product:{id:100,name:"Product 1",vendor:"Vendor A",},},{id:20,operatingSystem:"Microsoft Windows 2016",version:"4.1.0",product:{id:200,name:"Product 5",vendor:"Vendor B",},},{id:30,operatingSystem:"Microsoft Windows 2019",version:"3.0",product:{id:300,name:"Product 2",vendor:"Vendor A",},},{id:40,operatingSystem:"Linux",version:"1.0",product:{id:100,name:"Product 1",vendor:"Vendor A",}}],"customers":[{_id:1,name:"Customer Name",projects:[{name:"Project 1",description:"Project description",instances:[10],},{name:"Project 2",description:"Project description",instances:[10,20],}]}]}

Query

db.customers.aggregate([{$match:{_id:1}},{$unwind:"$projects"},{$lookup:{from:"instances",let:{instances:"$projects.instances"},pipeline:[{$match:{$expr:{$setIsSubset:[["$id"],"$$instances"]}}}],as:"projects.instances"}},{$unwind:"$projects.instances"},{$group:{_id:{id:"$_id",project:"$projects.name",product:"$projects.instances.product.id"},name:{$first:"$name"},description:{$first:"$projects.description"},product:{$first:"$projects.instances.product"},instances:{$push:{id:"$projects.instances.id",operatingSystem:"$projects.instances.operatingSystem",version:"$projects.instances.version",}}}},{$group:{_id:{id:"$_id.id",project:"$_id.project"},name:{$first:"$name"},description:{$first:"$description"},products:{$push:{$mergeObjects:["$product",{instances:"$instances"}]}}}},{$group:{_id:"$_id.id",name:{$first:"$name"},projects:{$push:{name:"$project_name",description:"$description",products:"$products"}}}}])

Result