Database

db={"documents":[{"_id":ObjectId("5a934e000102030405000000"),"name":"root","level":0},{"_id":ObjectId("5a934e000102030405000001"),"name":"child_A","parentId":ObjectId("5a934e000102030405000000"),"level":1},{"_id":ObjectId("5a934e000102030405000002"),"name":"child_B","parentId":ObjectId("5a934e000102030405000000"),"level":1},{"_id":ObjectId("5a934e000102030405000003"),"name":"child_A_1","parentId":ObjectId("5a934e000102030405000001"),"level":2}]}

Query

db.documents.aggregate([{$facet:{root:[{$match:{level:0}}],children:[{$match:{level:1}},{$graphLookup:{from:"documents",startWith:"$_id",connectFromField:"_id",connectToField:"parentId",maxDepth:0,as:"hierarchy"}},{$sort:{_id:1}}]}},{$unwind:"$root"},{$project:{"root._id":1,"root.name":1,"root.level":1,"root.hierarchy":{$filter:{input:"$children",as:"sub_level",cond:{$eq:["$$sub_level.parentId","$root._id"]}}}}},{$replaceRoot:{newRoot:"$root"}}])

Result