neo4j Cypher Иерархическое построение дерева ответ на JSON

Можете ли вы помочь мне построить запрос шифра? У меня есть следующая структура DB графа:

(parent:Category)-[:subcategory]->(child:Category)

С этими данными графика у меня есть иерархическое дерево с глубоким уровнем.

Я нашел следующий код на Stackoverfllow.com и изменил для моих данных:

MATCH (root:Category)-[:subcategory]->(parent:Category)-[:subcategory]->(child:Category)
WITH root, {category: parent, children: collect(child)} AS parent_with_children
WHERE NOT(()-[:subcategory]->(root))
RETURN {category: root, children: collect(parent_with_children)}

Но он строит ответ только на глубину с 3 уровнями дерева. Мне нужно больше. Я пытаюсь построить ответ JSON, как этот пример:

  [
    category: {
      name: "PC"
      children: {
        category: {
          name: "Parts"
          children: {
            category: {
              name: "CPU"
              ...
            }
          }
        },
        category: {
          name: "Accessories"
          ...
        }
      } 
    }, 
    category: {
      name: "Laptop"
      ...
    }
  ]

Сайфер может совершать рекурсивные звонки? Я думаю, что это будет лучше.

Благодарю.

Постскриптум Я знаю, что есть похожие вопросы по SO, но они мне не помогли.

Ответы на вопрос(1)

Ваш ответ на вопрос