Database
db={"entity":[{_id:1,name:"Entity 1"},{_id:2,name:"Entity 2"},{_id:3,name:"Entity 3"}],"devices":[{_id:1,entityKey:1,name:"Device 1"},{_id:2,entityKey:2,name:"Device 2"}],"events":[{_id:1,deviceKey:1,name:"Event 1"},{_id:2,deviceKey:1,name:"Event 2"},{_id:3,/**deviceKey: 2, Notice the event is missing a device key*/name:"Event 3"}]}
Query
db.entity.aggregate([{$match:{_id:3}},{$lookup:{from:"devices",localField:"_id",foreignField:"entityKey",as:"devices"}},{$lookup:{from:"events",localField:"devices._id",foreignField:"deviceKey",as:"events"}}])