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