I have a collection called customers
with the details as similar to below.
[
{accountCode: "1", parentId: "1", accountName: "John Doe" },
{accountCode: "1.1", parentId: "1", accountName: "John Doe" },
{accountCode: "1.1.1", parentId: "1.1", accountName: "John Doe" },
{accountCode: "2", parentId: "2", accountName: "John Doe" },
{accountCode: "2.1", parentId: "2", accountName: "John Doe" },
{accountCode: "2.1.1", parentId: "2.1", accountName: "John Doe" },
{accountCode: "2.1.1.1", parentId: "2.1.1", accountName: "John Doe" },
{accountCode: "3", parentId: "3", accountName: "John Doe" },
{accountCode: "3.2", parentId: "3", accountName: "John Doe" },
{accountCode: "3.2.1", parentId: "3.2", accountName: "John Doe" },
{accountCode: "3.2.2", parentId: "3.2", accountName: "John Doe" },
{accountCode: "3.2.3", parentId: "3.2", accountName: "John Doe" },
{accountCode: "3.2.3.1", parentId: "3.2.3", accountName: "John Doe" }
]
all the accounts are inherited by its accountCode
. I have upto 4 levels at this moment (every levels seperated by .
, it may grow as per the requirement.
I was trying to aggregate the data as below
[
{
accountCode: 1, children:[{
accountCode: 1.1, children: [{
accountCode: 1.1.1, children: []
}]
}]
},
{
accountCode: 2, children:[{
accountCode: 2.1, children: [{
accountCode: 2.1.1, children: [{
accountCode: 2.1.1.1, children: []
}]
}]
}]
},
{
accountCode: 3, children:[{
accountCode: 3.2, children: [
{ accountCode: 3.2.1, children: [] },
{ accountCode: 3.2.2, children: [] },
{ accountCode: 3.2.3, children: [
{ accountCode: 3.2.3.1, children: [] }
] }
]
}]
}
]
I'm kind of new to aggregation
using mongoose
, and grouping of the data using the aggregation. Hopw do I create this kind of tree? I googled and tried many answeres from stackoverlow and some of them are: Answer 1, Answer 2, etc.. but couldnt understand since the requirement is kind of different compared to my requirement. In my case, all the data is in single collection. I tried using $graphLookup
as well.
Kindly help me with creating an aggregation query.