如何删除从节点X开始的树的整个分支?

时间:2013-09-18 15:30:27

标签: neo4j

因此,如果我有一个类别树,如何在一个命令中删除该树的整个分支?我尝试了以下

START n = node(13163)MATCH(n) - [r:SUB_CATEGORY *] - >(m)WHERE m.type =“category”DELETE r,m;

仅接收以下内容..“表达式r产生了Stream(Relationship[13842], ?)。不知道如何删除它。”

1 个答案:

答案 0 :(得分:3)

“匹配”中的路径具有可变长度关系,因此对于某些节点m,r是关系的集合而不是单个关系。这就是错误发生的原因。

您只需要将每个关系作为一行返回,然后将其删除。

START n=node(13163) 
MATCH path = (n)-[:SUB_CATEGORY*]->(m) 
WHERE m.type = "category" 
With m, last(relationships(path)) as r
DELETE r,m

在可能存在除“m”附加的[:SUB_CATEGORY]关系之外的其他关系的情况下,安全的方法是使用“与m匹配m- [r?] - ()删除m,r”正如@Wes Freeman所述