Neo4j 如何删除重复的 EDGE?
Neo4j How to drop a duplicated EDGE?
我正在学习 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(重复边)?
此查询将删除 Person
个节点之间的重复 :FILHO
关系:
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
集合的尾部(所有关系,但第一个)并删除它们。
最好考虑一下如何避免创建重复边。考虑使用合并而不是创建。
我正在学习 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(重复边)?
此查询将删除 Person
个节点之间的重复 :FILHO
关系:
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
集合的尾部(所有关系,但第一个)并删除它们。
最好考虑一下如何避免创建重复边。考虑使用合并而不是创建。