Я играл с MongoDB, я хотел бы реконструировать это дерево в объект JSON, представляющий дерево:
{
"_id" : "Books",
"children" : [
{
"_id" : "Programming",
"children" : [
{
"_id": "Languages"
"children": []
},
{
"_id" : "Databases",
"children" : [
{
"_id": "MongoDB"
"children": []
},
{
"_id": "dbm"
"children": []
}
]
}
]
}
]
}
Дерево представлено в виде структуры с дочерними ссылками вбаза данных, точно так же, как здесь .
Как я читал в руководствах, агрегация $ graphLookup должна быть подходящим способом, но при выполнении этого конвейера агрегации:
[{$graphLookup: {
from: 'categories',
startWith: '$children',
connectFromField: 'children',
connectToField: '_id',
as: 'children',
maxDepth: 10
}}, {$match: {
"_id": "Books"
}}]
Iполучил root "Books" с каждым потомком, подключенным напрямую к root:
{
"_id" : "Books",
"children" : [
{
"_id" : "dbm",
"children" : [ ]
},
{
"_id" : "Programming",
"children" : [ "Databases", "Languages" ]
},
{
"_id" : "Databases",
"children" : [ "MongoDB", "dbm" ]
},
{
"_id" : "Languages",
"children" : [ ] },
{
"_id" : "MongoDB",
"children" : [ ]
}
]
}
Edit : Я спрашиваю, существует ли подход для решения этой проблемы только с помощью запросов mongodb, без jsрекурсивная функция.