Neo4j删除它们之间有更多关系的节点

时间:2017-06-28 13:13:05

标签: neo4j cypher

我正在尝试从错误的数据中清除数据库。 我有彼此之间有多个关系的节点,我正在尝试删除这些节点。

一个例子是:

(p:Person{id:'1'})-[r:SIBLING_OF]-(k:Person{id:'2'})
(p:Person{id:'1'})-[r:PARENT_OF]-(k:Person{id:'2'})

我尝试了几个查询,但没有一个是正确的。

有谁知道实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

所以你想要删除节点,而不仅仅是关系,对吗?

MATCH (p1:Person)-[:SIBLING_OF]-(p2:Person),
(p2)-[:PARENT_OF]-(p1)
DETACH DELETE p1, p2

你应该先做RETURN而不是DETACH DELETE,以确保你删除正确的。

答案 1 :(得分:1)

如果你想要一个更通用的查询来查找和删除它们之间有多个关系的所有节点对,你可以试试这个:

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