У меня есть три независимых дерева категорий, которые будут импортироваться в любом порядке с использованием cypher.Neo4j - запрос Cypher для импорта дерева категорий без дублирующейся записи
- (с2) - [Родитель] -> (с1)
- (с4) - [Родитель] -> (с3) -> [Родитель] -> (с1)
- (с5) - [Родитель] -> (с3)
и необходимо создать структуру, указанную в рисунке, используя запрос. Запрос я написал,
MERGE (:Category {name:'c2'})-[:PARENT]->(:Category {name:'c1'})
MERGE (:Category {name:'c4'})-[:PARENT]->(:Category {name:'c3'})-[:PARENT]->(:Category {name:'c1'})
MERGE (:Category {name:'c5'})-[:PARENT]->(:Category {name:'c3'})
Но выше запроса создает дубликат категории c1 для второго слияния запроса, который мне нужно избежать. Также третий запрос должен создать новую категорию c3, которая сейчас происходит правильно.
Еще одна вещь заключается в том, что эти три запроса cypher должны быть независимо исполняемыми .eg: в системе уже есть дерево категорий (c2) - [PARENT] -> (c1) и необходимо добавить (c4) - [PARENT] - > (c3) -> [PARENT] -> (c1) в дереве категорий с использованием cypher.
Я могу пойти с некоторыми аналогичными подходами в документации http://neo4j.com/docs/stable/cypherdoc-linked-lists.html. но просто хочу, чтобы проверить, есть простой способ решить эту проблему
поведение нормально, потому что вы не использовать идентификаторы и таким образом, Сайфер не может знать, представляет собой новый узел или узел c1. Вот очень хорошее объяснение о MERGE http://graphaware.com/neo4j/2014/07/31/cypher-merge-explained.html –