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

Neo4j 如何在单个查询中删除层次结构下的节点,neo4j,cypher,Neo4j,Cypher,我有一个挑战节点,可以在它下面发布评论。每个注释节点可以依次在其下发布注释,最高可达任何级别 视觉上,如下图所示: 删除质询节点时,我需要能够首先删除附加到此质询节点的注释节点的整个层次结构 我尝试了一些查询,但无法找到如何使用单个查询来实现此效果。我正在尝试删除级别2上所有节点的一个查询是: MATCH (c:Challenge {id: 'rJkSss-4W'})<-[:POSTED_IN]-(comment:Comment) WITH c, comment OPTIONAL M

我有一个挑战节点,可以在它下面发布评论。每个注释节点可以依次在其下发布注释,最高可达任何级别

视觉上,如下图所示:

删除质询节点时,我需要能够首先删除附加到此质询节点的注释节点的整个层次结构

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

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

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

MATCH(c:Challenge{id:'rJkSss-4W'})如果质询id出现在每个注释上,即使它们有父注释,也会简单(更快)。如果您错过了它,*代表可变长度路径,因此它将遍历所有注释级别。因此,如果您有一个不同的用例,您可能希望给它一个上限(以免您的查询变得疯狂)
(c:Challenge{id:'rJkSss-4W'})