我正在使用cypher手动提供我的neo4j数据库,因此容易出错,比如创建重复的节点:
重复节点将具有与其他节点的每个关系。 是否有内置函数来合并这些节点?或者我应该手动完成吗?
听起来可能,但cypher脚本很复杂:
答案 0 :(得分:2)
为避免将来出现这种情况,请查看Cypher中的MERGE关键字。 不幸的是,据我所知,Cypher(还)中没有任何内容像:
MATCH (n:MyNode),(m:MyNode)
WHERE ID(n) <> ID(m) AND
PROPS(n) IN PROPS(m) AND PROPS(m) IN PROPS(n)
(...) DELETE (...)
第三行的虚构功能PROPS是不 Cypher语言的一部分,用户定义的功能尚未进入Neo4j。
如果您不使用生产实例,最简单的可能是备份您的数据文件夹并尝试开始插入(使用MERGE)。
答案 1 :(得分:2)
试试这个:
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
答案 2 :(得分:0)
我想你可以试试:
apoc.refactor.mergeNodes(nodes, options)
关系:
apoc.refactor.mergeRelationships(rels, options)
或者:
apoc.periodic.iterate(query, options)