我正在使用Cypher手动填充我的neo4j数据库,因此容易出现错误,例如创建重复节点:
这些重复节点将与其他节点建立关系。是否有内置函数可以合并这些节点?还是应该手动操作?
听起来可能可以,但使用Cypher脚本会很复杂:
- 获取每个重复节点的关系
- 重新创建它们(具有它们的属性)以正确的节点(给定节点ID)
- 删除与重复节点的关系
- 最后删除重复节点。
MATCH (n:MyNode),(m:MyNode)
WHERE ID(n) <> ID(m) AND
PROPS(n) IN PROPS(m) AND PROPS(m) IN PROPS(n)
(...) DELETE (...)
我认为你可以尝试:
apoc.refactor.mergeNodes(nodes, options)
对于关系:
apoc.refactor.mergeRelationships(rels, options)
或者:
apoc.periodic.iterate(query, options)
试试这个:
MATCH (n:MyNode),(m:MyNode),(o:OtherNode {id:123})
WHERE n <> m
MATCH (m)-[r:FOO]->()
CREATE (n)-[r2:FOO]->(o)
SET r2 = r
DELETE r,m