Neo4j如何删除重复的EDGE?

时间:2018-04-05 17:07:56

标签: neo4j neo4jclient

我正在学习Cypher / Neo4j,使用C#
我创建了EDGE 3次。

  client.Cypher
               .Match("(user1:Person)", "(user2:Person)")
               .Where((Person user1) => user1.name == "Tony")
               .AndWhere((Person user2) => user2.name == "Maria Esther")
               //.Create("(user1)-[:PAI]->(user2)")
               .Create("(user2)-[:FILHO {DataDeNascimento: '2006'}]->(user1)")
               .ExecuteWithoutResults();

如何放弃另外2个:FILHO (重复边缘)?

My Graph

2 个答案:

答案 0 :(得分:2)

此查询将删除:FILHO个节点之间的重复Person关系:

MATCH (p1:Person)-[r:FILHO]->(p2:Person)
WITH p1, p2, COLLECT(r) as rels
FOREACH(r IN tail(rels) | DELETE r)

首先,它匹配所有FILHO关系和Person个节点。 然后将每对Person节点的关系聚合到rels集合中。 然后遍历每个rels集合的尾部(所有关系,但第一个),并删除它们。

答案 1 :(得分:1)

考虑如何避免创建重复边缘可能更好。考虑使用合并而不是创建。