Hi
we have a requirement to show data in tree format.
Sample Data:
db.FamilyTree.insert({"id":"100", "ParentName":"Jhon Smith", "Children" : "Michael Smith" })
db.FamilyTree.insert({"id":"100", "Diana Smith":"Jhon Smith", "Children" : "Diana Smith"})
db.FamilyTree.insert({"id":"101", "ParentName":"Michael Smith", "Children" : ""})
db.FamilyTree.insert({"id":"102", "ParentName":"Diana Smith", "Children" : "Britney Smith"})
db.FamilyTree.insert({"id":"301", "ParentName":"Britney Smith", "Children" : ""})
db.FamilyTree.insert({"id":"200", "ParentName":"Richard Smith", "Children" : "M Smith" })
db.FamilyTree.insert({"id":"200", "ParentName":"Richard Smith", "Children" : "D Smith" })
db.FamilyTree.insert({"id":"201", "ParentName":"M Smith", "Children" : "" })
db.FamilyTree.insert({"id":"202", "ParentName":"D Smith", "Children" : "" })
the expected output should be in the below format.
[
{
"id":"100",
"name":"Jhon Smith",
"children":[
{
"id":"101",
"name":"Michael Smith",
"children":null
},
{
"id":"102",
"name":"Diana Smith",
"children":[
{
"id":"301",
"name":"Britney Smith",
"children":null
}
]
}
]
},
{
"id":"200",
"name":"Richard Smith",
"children":[
{
"id":101,
"name":"Michael Smith",
"children":null
},
{
"id":"102",
"name":"Diana Smith",
"children":null
}
]
}
]
I Have tried with $graphLookup but I didn’t get the required output:
db.FamilyTree.aggregate( [
{ $project: { _id: 0}},
{
$graphLookup: {
from: "FamilyTree",
startWith: "$Children",
connectFromField: "Children",
connectToField: "ParentName",
as: "TreeSearch"
}
}
] )
Please help me with this to achieve the required outcome.
Thanks.