2017-07-28 1 views
2

チャレンジノードにはチャットノードがあります。各コメントノードには、どのレベルまでもコメントが投稿されます。1つのクエリで階層下のノードを削除する方法

視覚的に、下の画像のようなもの:

enter image description here

チャレンジノードが削除されると、私は最初にこのチャレンジ・ノードに接続されているコメントノードの階層全体を削除できるようにする必要があります。

私はいくつかのクエリを試しましたが、この効果を得るために単一のクエリを使用する方法を理解できません。私はレベル2ですべてのノードを削除したしようとしている一つのクエリは次のとおりです。

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

挑戦ノードの下に投稿されたすべてのコメントノードを削除することができ、単一のクエリ、(レベル1、2を含めを書くための方法はあります、...)?上記の例では、すべての13のコメントノードを1つのクエリで削除したいと考えています。

+0

はそんなに単純(かつ迅速)だろうがありません。この

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

をお試しください親コメント。 –

答えて

3

挑戦idは、彼らが持っている場合でも、すべてのコメントにあった場合、私はコメントしただろうが、私は十分に評判

+2

あなたがそれを見逃してしまった場合、*は可変長のパスのため、コメントのすべてのレベルを横断します。したがって、ユースケースが違う場合は、上限を設定したいかもしれません。 '(c:Challenge {id:' rJkSss-4W '})< - [:POSTED_IN * 1..4 ] - (コメント:コメント) ' –

関連する問題