Cypherを使用してNeo4jデータベース内の特定のノードに関連する接続グラフを削除します。ユースケースは、開始ノードと、開始ノードへのパスが存在するすべてのノードを削除することです。トランザクションを制限するには、クエリは反復的でなければならず、接続されたグラフを切断してはいけません。Cypherで接続グラフを削除
今まで私は、このクエリを使用しています:
OPTIONAL MATCH (start {indexed_prop: $PARAM})--(toDelete)
OPTIONAL MATCH (toDelete)--(toBind)
WHERE NOT(id(start) = id(toBind)) AND NOT((start)--(toBind))
WITH start, collect(toBind) AS TO_BIND, toDelete limit 10000
DETACH DELETE toDelete
WITH start, TO_BIND
UNWIND TO_BIND AS b
CREATE (start)-[:HasToDelete]->(b)
、削除ノードは0
に等しくなるまで、それを呼び出すには、このためのより良いクエリがありますか?
接続されたすべてのノードに可変長のパスを試し、接続されているすべてのノードのDETACH DELETEを試しましたか?それはあなたのヒープを爆破しますか? – InverseFalcon
はい、問題は、クエリが大きなグラフでは機能しないことです。クエリを複数回呼び出すと、接続されたグラフが壊れることがあります。 – cde