私はノードがあり、(p:Post)
と呼び、そのノードは[r:REPLIED_WITH]
という他の投稿との関係を持っています(reply:Post)
。 reply
は、同じ関係を持つノードをさらに持つことができます。これは、技術的には無限の回答になる可能性があります。 (p)
とすべての返信と返信のすべての返信をカスケード形式で削除します。私はDETACH DELETE
について知っていますが、大規模なデータセットではないと言います。実際にはそうでないものは削除しないようにしたいと思っています。ユーザーが投稿を作成した場合はどうすればいいですか。Neo4J投稿の返信を削除せずに返信でユーザーや他の関係を削除しようとしています
のビジュアルについてこれは私が欲しいものですが、私はちょうど最初のポストとポストへの返信や、それらの回答の回答にポストし、すべての返信に答えたすべての投稿を削除したい (p:Post)<-[r:REPLIED_WITH]-(reply:Post)<-[r2:REPLIED_WITH]-(reply2:Post)<-[r3:REPLIED_WITH]-(reply3:Post)...
を削除しました。それは深い無限のレベルかもしれません。
結果が空、その後、ループ内で同じクエリを実行している場合、私はそれを確認した後
MATCH (p:Post)
WHERE ID(p) = {postID}
OPTIONAL MATCH (p)<-[r:replied_To]-(reply:Post)
DELETE p, r
RETURN ID(reply)
以外のそれにループロジックを把握することはできません。それだけで状況に取り組む最も効率的な方法ではないようです。
そのperodicコミットは素晴らしいです。私は存在していたことを知らなかった。だから、すべての投稿はユーザーを持っていますが、DETACH DELETEもユーザーを削除しますか?私はDETACH DELETEがそれらのノードが接続されているすべての関係とノードを削除すると信じています。もしそれらが接続されていれば、ユーザーも削除されます。それは正確ですか? –
ユーザーが(p:Post)< - [:WROTE] - (u:User)と接続しています –
正確ではありません。 DETACH DELETEは、削除しているノード、およびそれらに接続されているすべての関係のみを削除します。クエリに含まれていない接続ノードへの削除をカスケードしません。上の例では、ToDeleteというラベルの付いたノードだけでなく、他のノードとの関係も削除されるので、投稿したユーザーはToDeleteというラベルが付いていないため、そのまま残ります。 – InverseFalcon