Что вы ищете, так это команда MERGE
.
Чтобы выполнить сценарий, вы должны выполнить его в два этапа для оптимального выполнения
1) Создать узлы, если они не 't уже существует
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///my_file.csv" AS row
MERGE (l5:Node {value:row.Level5})
MERGE (l4:Node {value:row.Level4})
MERGE (l3:Node {value:row.Level3})
MERGE (l2:Node {value:row.Level2})
MERGE (l1:Node {value:row.Level1})
2) Создайте отношения, если они еще не существуют
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///my_file.csv" AS row
MATCH (l5:Node {value:row.Level5})
MATCH (l4:Node {value:row.Level4})
MATCH (l3:Node {value:row.Level3})
MATCH (l2:Node {value:row.Level2})
MATCH (l1:Node {value:row.Level1})
MERGE (l5)-[:child_of]->(l4)
MERGE (l4)-[:child_of]->(l3)
MERGE (l3)-[:child_of]->(l2)
MERGE (l2)-[:child_of]->(l1)
И перед всеми , вам необходимо создать ограничение для вашегоузел для облегчения работы MERGE
.На моем примере это будет:
CREATE CONSTRAINT ON (n:Node) ASSERT n.value IS UNIQUE;