Database

db={category:[{id:1,name:"cat 1"},{id:2,name:"cat 2"}],items:[{id:1,name:"item 1"},{id:2,name:"item 2"},{id:3,name:"item 3"},{id:4,name:"item 4"}],package:[{id:1,name:"package 1",categoryId:1,brandId:1,items:[{_id:1,itemId:1},{_id:2,itemId:2}]},{id:2,name:"package 2",categoryId:2,brandId:2,items:[{_id:1,itemId:3},{_id:2,itemId:4}]}]}

Query

db.category.aggregate([{"$lookup":{"from":"package","localField":"id","foreignField":"categoryId","as":"packages"}},{"$unwind":"$packages"},{"$unwind":"$packages.items"},{"$lookup":{"from":"items","localField":"packages.items.itemId","foreignField":"id","as":"packages.items"}},{"$group":{"_id":"$packages.id",name:{"$first":"$packages.name"},"brandId":{"$first":"$packages.brandId"},"categoryId":{"$first":"$packages.categoryId"},root:{"$first":"$$ROOT"},"items":{"$push":"$packages.items"}}},{"$group":{"_id":"$root.id",name:{"$first":"$root.name"},"packages":{"$push":"$$ROOT"}}},{"$project":{"packages.root":0}}])

Result