如何使用cypher在neo4j 2.0中删除节点或与NULL属性的关系

时间:2014-01-06 11:55:18

标签: neo4j cypher

我在这些中创建了一些节点和关系。但在做这些事情的时候发生了错误。我想删除所有具有“SGS”的节点,除了ID为2的节点。

以下是我运行以创建节点和关系的脚本:

(如果可能的话,还请建议如何编辑这个)

我尝试了DELETE(以及匹配,其中,IS NULL等)与一些不同的试错方法,但无法实现相同。请帮助。

2 个答案:

答案 0 :(得分:7)

看起来所有节点都有一个名称,但要删除的节点除外。 所以你可以尝试

match n
WHERE NOT (HAS (n.name)) //find all nodes with no name property
with n
match n-[r]-() //find all nodes connected to that node
delete r,n //delete its relations and then the node itself

(注意未经测试)

在上面的create语句中,您使用(rkn)代替(rk),也可能(回答)而不是其他东西。所以(rkn) - [:READ] - >(bk1)将创建一个没有属性的节点来表示rkn和与OneNight @ CallCenter的READ关系​​。您只需要验证并修复它们。

e.g。关系都是指一个名为(rkn)的节点,所以我将你的create语句中的rk节点重命名为rkn。还请验证您在关系中引用的每个节点实际上都映射到create语句中的节点。

  

注意:Cypher不再支持HAS,请改用EXISTS!

答案 1 :(得分:2)

这个对我有用

match (n) WHERE NOT (EXISTS (n.name)) DETACH DELETE n