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

问题描述 投票:2回答:1

我有一个挑战节点,可以在其下面发布评论。每个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节点。

neo4j cypher
1个回答
4
投票

试试这个

MATCH (c:Challenge {id: 'rJkSss-4W'})<-[:POSTED_IN*]-(comment:Comment)
detach delete comment
© www.soinside.com 2019 - 2024. All rights reserved.