0

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

这种传入和传出关系是可选的。

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

Student 节点与 Teacher 具有可选关系,与 Class 具有可选关系。

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

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

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

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

4

2 回答 2

1

你非常接近:

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

(根据 jjaderberg 的评论更新)

于 2014-04-21T14:31:18.797 回答
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 来控制节点是不规则的并且通常是不好的。

于 2014-04-21T17:19:45.737 回答