如何使用Cypher删除neo4j中两个克隆节点中的节点

时间:2014-03-22 09:43:15

标签: neo4j cypher

运行此Cypher查询两次以创建Actor的克隆

CREATE (n:Actor { name:"Tom Hanks" });

现在,当我运行此查询时,我有两个节点

MATCH (actor:Actor) RETURN actor;

我得到了结果集

演员

(1:演员{姓名:“汤姆汉克斯”})

(2:演员{姓名:“汤姆汉克斯”})

现在如何只删除第二个节点

3 个答案:

答案 0 :(得分:3)

另一种可能性:

MATCH (actor:Actor {name: 'Tom Hanks'})
WITH actor
SKIP 1
DELETE actor;

答案 1 :(得分:2)

您可以收集节点,在for-each循环中循环遍历集合的尾部,并删除每个节点。它适用于你的情况,有两个“汤姆汉克斯”节点,但同样好,如果你有五个或五十个,删除除了一个除外。

MATCH (a:Actor { name:"Tom Hanks" })
WITH collect (a) as aa
FOREACH (b IN TAIL (aa)) |
    DELETE b)

或列表切片

MATCH (a:Actor { name:"Tom Hanks" })
WITH collect (a) as aa
FOREACH (b IN aa[1..] |
    DELETE b)

答案 2 :(得分:0)

如果您知道节点的标识符,则可以使用它来删除节点。

MATCH (actor:Actor { name: "Tom Hanks" })
WHERE id(actor)=1
DELETE actor;