Database

db={"sites":[{"_id":1,"name":"site 1"}],"nodes":[{"_id":1,"name":"node 1","siteId":1}],"devices":[{"_id":1,"name":"device 1","nodeId":1}],"sensors":[{"_id":1,"name":"sensor 1","deviceId":1}]}

Query

db.sites.aggregate([{$lookup:{from:"nodes",let:{siteId:"$_id"},pipeline:[{$match:{$expr:{$eq:["$$siteId","$siteId"]}}},{$lookup:{from:"devices",let:{nodeId:"$_id"},pipeline:[{$match:{$expr:{$eq:["$$nodeId","$nodeId"]}}},{$lookup:{from:"sensors",localField:"_id",foreignField:"deviceId",as:"sensors"}}],as:"devices"}}],as:"nodes"}}])

Result