删除具有所有传入和传出关系的节点

时间:2014-04-21 14:18:56

标签: neo4j relationship cypher neo4jphp

我想删除所有传入和传出关系的节点。

此传入和传出关系是可选的。

(t:Teacher)-[:TEACHES]->(s:Student)
(s:Student)-[:ATTENDS]->(c:Class)

学生节点与教师有可选关系,与课程有可选关系。

我想删除{id:1}的学生节点。

我知道如何删除所有节点和关系:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

但无法将其转换为特定节点。请帮忙。

2 个答案:

答案 0 :(得分:1)

你非常接近:

match (n:Student) 
where n.studentid = 2224
optional match (n)-[r]-()
delete n,r

(根据jjaderberg的评论更新)

答案 1 :(得分:1)

只需将判别属性添加到第一个匹配子句

即可
MATCH (s:Student {id:1})
OPTIONAL MATCH s-[r]-()
DELETE r, s

如果id代表内部节点ID而不是您设置的属性,那么

MATCH (s)
WHERE ID (s) = 1
OPTIONAL MATCH s-[r]-()
DELETE r, s

应该有效。通过内部id来保持节点是不规则的,通常是不好的。