Neo4j删除它们之间具有多个关系的节点
我正在试图清除数据库中的错误数据。 我的节点之间有多个关系,我正在尝试删除这些节点 这方面的一个例子是:Neo4j删除它们之间具有多个关系的节点,neo4j,cypher,Neo4j,Cypher,我正在试图清除数据库中的错误数据。 我的节点之间有多个关系,我正在尝试删除这些节点 这方面的一个例子是: (p:Person{id:'1'})-[r:SIBLING_OF]-(k:Person{id:'2'}) (p:Person{id:'1'})-[r:PARENT_OF]-(k:Person{id:'2'}) 我试过几个问题,但没有一个是对的 有人知道实现这一点的最佳方法是什么吗?所以您想删除节点,而不仅仅是关系,对吗 MATCH (p1:Person)-[:SIBLING_OF]-(p2
(p:Person{id:'1'})-[r:SIBLING_OF]-(k:Person{id:'2'})
(p:Person{id:'1'})-[r:PARENT_OF]-(k:Person{id:'2'})
我试过几个问题,但没有一个是对的
有人知道实现这一点的最佳方法是什么吗?所以您想删除节点,而不仅仅是关系,对吗
MATCH (p1:Person)-[:SIBLING_OF]-(p2:Person),
(p2)-[:PARENT_OF]-(p1)
DETACH DELETE p1, p2
您可能应该先执行RETURN而不是DETACH DELETE,以确保删除的是正确的节点。所以您希望删除节点,而不仅仅是关系,对吗
MATCH (p1:Person)-[:SIBLING_OF]-(p2:Person),
(p2)-[:PARENT_OF]-(p1)
DETACH DELETE p1, p2
您可能应该先执行RETURN而不是DETACH DELETE,以确保删除的是正确的节点。如果您希望使用更通用的查询来查找和删除所有具有多个关系的节点对,您可以尝试以下操作:
MATCH (p1:Person)-[r]-(p2:Person)
WITH p1, p2, count(r) as cnt
WHERE cnt > 1 and id(p1) < id(p2)
DETACH DELETE p1, p2
匹配(p1:个人)-[r]-(p2:个人)
使用p1、p2,将(r)计数为cnt
其中cnt>1且id(p1)
如果您希望使用更通用的查询来查找和删除具有多个关系的所有节点对,您可以尝试以下操作:
MATCH (p1:Person)-[r]-(p2:Person)
WITH p1, p2, count(r) as cnt
WHERE cnt > 1 and id(p1) < id(p2)
DETACH DELETE p1, p2
匹配(p1:个人)-[r]-(p2:个人)
使用p1、p2,将(r)计数为cnt
其中cnt>1且id(p1)
此查询工作正常。唯一的一个缺点是我有许多不同的关系,因此我必须对许多不同的组合执行此查询。此查询工作正常。唯一的一个缺点是我有很多不同的关系,所以我必须对许多不同的组合执行此查询