Database
[{_id:ObjectId("6092387f9c69970c20fe648a"),subGroups:[ObjectId("6092387f9c69970c20fe648b"),/** Group B*/ObjectId("6092387f9c69970c20fe648c"),/** Group C*/],name:"Group A",info:"..."},{_id:ObjectId("6092387f9c69970c20fe648b"),subGroups:[ObjectId("5e11c21977d5ad1eb941afab"),],name:"Group B",info:"..."},{_id:ObjectId("6092387f9c69970c20fe648c"),subGroups:[],name:"Group C",info:"..."},{_id:ObjectId("5e11c21977d5ad1eb941afab"),subGroups:[],name:"Group D",info:"..."},]
Query
db.collection.aggregate([{$match:{"name":"Group A"}},{$graphLookup:{from:"collection",startWith:"$subGroups",connectFromField:"subGroups",connectToField:"_id",as:"groupHierarchy",}},{$project:{result:{"$concatArrays":[["$name"],{$map:{input:"$groupHierarchy",as:"group",in:"$$group.name"}}]}}}])