合并节点之间的重复关系

时间:2019-05-08 10:12:42

标签: neo4j cypher

我正在使用Neo4j 3.5.4版,并对电影数据集进行“入门课程”练习。我注意到我不小心在某些关系中引入了重复项,如下所示:

MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
 WHERE m.title = 'Forrest Gump'
 RETURN p,m,r

enter image description here enter image description here

我如何合并它们,以便只保留其中一个重复项?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用tail和collect函数删除重复项:

  • 收集将获得所有关系
  • 除了第一个,Tail将获得集合中的所有物品
  • Foreach将在集合中的所有项目中循环|然后将其删除

这里是:

MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
 WHERE m.title = 'Forrest Gump'
 WITH tail(collect(r)) as coll , p
 FOREACH (x in coll| DELETE x)