如何在单个查询中删除层次结构下的节点

时间:2017-07-28 14:29:26

标签: neo4j cypher

我有一个挑战节点,可以在其下面发布评论。每个Comment节点都可以在其下面发布评论,直到任何级别。

视觉上,如下图所示:

enter image description here

当删除Challenge节点时,我需要能够首先删除附加到此Challenge节点的Comment节点的整个层次结构。

我尝试了一些查询,但无法弄清楚如何使用单个查询来实现此效果。我尝试删除级别2的所有节点的一个查询是:

MATCH (c:Challenge {id: 'rJkSss-4W'})<-[:POSTED_IN]-(comment:Comment) 
WITH c, comment 
OPTIONAL MATCH (comment)<-[:POSTED_IN]-(childComment) 
DETACH DELETE childComment;

有没有办法编写单个查询,可以删除在挑战节点下发布的所有Comment节点(包括在1,2级......)?在上面的例子中,我希望在一个查询中删除所有13个Comment节点。

1 个答案:

答案 0 :(得分:4)

试试这个

MATCH (c:Challenge {id: 'rJkSss-4W'})<-[:POSTED_IN*]-(comment:Comment)
detach delete comment