我正在学习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 (重复边缘)?
答案 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)
考虑如何避免创建重复边缘可能更好。考虑使用合并而不是创建。