node(8) に node(13) と node(14) の 2 つの子があるように、ツリー構造があります。node(8) を cyhper で削除するときに、すべての子を削除するにはどうすればよいですか。
私は cypher を次のように書きます:" START r=node(8) MATCH r-[:children*0..]-> d With d Match d-[x]-() Delete d,x"
動作するはずですが、実際には node(8) を削除してエラーが発生するだけです。実際には、このようなコレクションを削除しようとしていることがわかりました。
- ---d------------------r
- ノード(8)----------Rel(16)
- ノード(8)----------Rel(17)
- ノード(9)----------Rel(16)
- ノード(10)---------Rel(17)
そして、cyhper が最初の Node(8) を削除した後、2 回目に Node(8) を削除しようとすると、もう存在しないためエラーが発生します。
次のようにサイファーを書くと、原因が配線されます。「START r=node(8) MATCH r-[:children*0..]-> d Return d」
- ---d---
- ノード(8)
- ノード(8)
- ノード(9)
- ノード(10)
そして、それは正しいです。しかし、私たちが知っているように、それらに関係を付けてそれらを削除することはできないため、「WITH」を使用して暗号を記述する必要があります。
"START r=node(8) MATCH r-[:children*0..]-> d With d Match d-[x]-() Return d,x"
そしてまた間違った結果を得る。
- ---d------------------r
- ノード(8)----------Rel(16)
- ノード(8)----------Rel(17)
- ノード(9)----------Rel(16)
- ノード(10)---------Rel(17)
誰でも私を助けることができますか?本当に憂鬱です。私はneo4jがとても好きなのですが、「削除」の部分がとても難しいと思います。「強制削除」を使用して、Neo4j に次のようにリレーションシップを自動削除させないのはなぜですか。
"START r=node(8) MATCH r-[:children*0..]-> d FORCE DELETE d"
ところで、なぜ「削除」部分でdistinctを使用できないのですか?