Создать вложенную древовидную структуру в neo4j - PullRequest
1 голос
/ 10 апреля 2020

рассмотрим ситуацию. Есть компания, которая говорит А. Так что это root узел. Узел создан (n: Comapny {id: 'a', title: 'A' parentId: ''}). A добавляет 2 заместителя, скажем, IT Team, команда тестирования. Узел .So создан ({cl: ComapnyLeaf {id: 'itTeam', title: 'IT Team', parentId: 'a'}); ({cl: ComapnyLeaf {id: 'testingTeam', заголовок: 'TESTING Team', parentId: 'a'}); Теперь он добавляет emapolyee ({cl: ComapnyLeaf {id: 'emp1', title: 'Emp 1', parentId: 'itTeam'});

, поэтому при создании узлов должны быть созданы отношения между ними. будет выглядеть как

Компания (A) <---- child --- it Team <---- child --- emp1 <---- child --- Команда тестирования </p>

1 Ответ

2 голосов
/ 11 апреля 2020

Я думаю, что вам нужно перепроверить ваш запрос и желаемый результат, у вас есть неправильные орфографические ошибки и неправильный синтаксис, и ваш вывод не отражает ваш ввод. Команда тестирования должна в конечном итоге стать дочерним узлом: Company a, а не Emp 1: CompanyLeaf.

Давайте сначала создадим такие узлы, как это (вам нужно включить редактор запросов с несколькими утверждениями в настройки браузера Neo4j):

CREATE (n:Company:Node {id:'a', title:'A'});
CREATE (cl:CompanyLeaf:Node {id:'itTeam', title:'IT Team', parentId:'a'});
CREATE (cl:CompanyLeaf:Node {id:'testingTeam', title:'TESTING Team', parentId:'a'});
CREATE (cl:CompanyLeaf:Node {id:'emp1', title:'Emp 1', parentId:'itTeam'});

Затем давайте добавим индекс: Node (id) для поддержки быстрого поиска, который нам понадобится для создания отношений.

CREATE INDEX ON :Node(id)

Тогда для проверки всех узлов CompanyLeaf в графе и прикрепления их к узлу с указанным идентификатором в качестве родителя, мы можем использовать это:

MATCH (c:CompanyLeaf)
WHERE NOT (c)-[:PARENT]->()
MATCH (parent:Node {id:c.parentId})
CREATE (c)-[:PARENT]->(parent)

Предложение WHERE NOT гарантирует, что мы не создадим дубликат отношения в случае, если мы уже выполнили запрос, или в случае, если мы делаем несколько импортов узлов, между которыми происходит создание отношений.

Также это создает: отношения PARENT, указывающие на родителя, поскольку ваш пример не имеет смысла with: дочерние отношения, указывающие на родителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...