свертывание двух узлов в один узел в py2neo и neo4j

Мне нужно свернуть два узла в один узел. Я зашел так далеко «вниз», но не смог добиться того, чего хочу.

Например, я хочу свернуть узел "парень" и узел "люблю" на новый узел, сохраняя путь .


person practitioner    schedule 23.04.2018    source источник


Ответы (2)


Для этого в APOC есть процедура: apoc.refactor.mergeNodes

Пример :

MATCH (f:Node {value:'Guy'}), (b:Node {value:'Love'})
WITH * LIMIT 1
CALL apoc.refactor.mergeNodes([f,b])
YIELD node RETURN node
person logisima    schedule 23.04.2018
comment
Спасибо за упоминание APOC. Я попытался сделать это, но получил эту ошибку: ConstraintError: org.neo4j.kernel.api.exceptions.ConstraintViolationTransactionFailureException: невозможно удалить узел ‹81›, поскольку он все еще имеет отношения. Чтобы удалить этот узел, вы должны сначала удалить его отношения. - person practitioner; 23.04.2018
comment
Кажется, в этой функции есть ошибка: github.com/neo4j- contrib/neo4j-apoc-procedures/issues/578. Я обновил свой ответ упомянутым обходным путем по этой проблеме. - person logisima; 23.04.2018
comment
есть ли способ обновить свойства нового объединенного узла? (при слиянии) - person practitioner; 23.04.2018
comment
да см. документацию -› neo4j-contrib.github.io/neo4j-apoc -процедуры/#_merging_nodes - person logisima; 23.04.2018

Попробуйте создать новый узел с нужными вам свойствами, а затем удалите узлы (парень и любовь), используя ОТКЛЮЧИТЬ УДАЛИТЬ.

person techie95    schedule 23.04.2018
comment
спасибо techie95. ответ logisima лучше в моем случае. - person practitioner; 26.04.2018