Восстановление дерева в иерархический объект JSON - PullRequest
0 голосов
/ 05 февраля 2019

Я играл с 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рекурсивная функция.

...