当我运行此查询时:
START n1=node(7727), n2=node(7730)
MATCH n1-[r:SKILL]->n2 RETURN r
它为我提供了两个节点之间的重复关系列表。我将如何添加到cypher查询以迭代关系以保持一个关系并删除其余关系?
答案 0 :(得分:33)
为两个已知节点执行此操作:
start n=node(1), m=node(2) match (n)-[r]->(m)
with n,m,type(r) as t, tail(collect(r)) as coll
foreach(x in coll | delete x)
要为所有关系全局执行此操作(请注意,此操作可能非常昂贵,具体取决于图表的大小):
start r=relationship(*)
match (s)-[r]->(e)
with s,e,type(r) as typ, tail(collect(r)) as coll
foreach(x in coll | delete x)
答案 1 :(得分:2)
使用Neo4J 4.x并全局删除重复的关系时,您将希望使用以下内容。语法略有变化,其他回复中提到的start
前缀不再起作用。
match ()-[r]->()
match (s)-[r]->(e)
with s,e,type(r) as typ, tail(collect(r)) as coll
foreach(x in coll | delete x)