Database

db={"categories":[{"_id":1,"name":"Root","parent":null},{"_id":2,"name":"Sub - Level 1","parent":1},{"_id":3,"name":"Sub - Level 2","parent":2},{"_id":4,"name":"Sub - Level 3","parent":3}]}

Query

db.categories.aggregate([{"$match":{"_id":1}},{"$graphLookup":{"from":"categories","startWith":"$_id","connectFromField":"_id","connectToField":"parent","as":"menu",depthField:"order"}},{$unwind:"$menu"},{$sort:{_id:1,"menu.order":1}},{$group:{_id:"$_id",name:{$first:"$name"},parent:{$first:"$parent"},menu:{$push:"$menu"}}},{$unset:"menu.order"}])

Result