neo4j 1.8에서 모든 노드 및 관계 삭제


92

이 질문은 이미 많은 사람들이
내 연구를 위해 요청한 것임을 알고 있습니다. 여기에 이전에 몇 가지 질문이 있습니다.

  1. neo4j 그래프에서 모든 관계를 삭제하는 방법은 무엇입니까?
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

그러나 결국 여전히 문제를 해결할 수 없습니다.
"모든"노드와 "모든"관계를 삭제하고 싶습니다.

여기에 이미지 설명 입력

삭제 "모두"가 0 개의 노드 0 개의 속성과 0 개의 관계 가 남아 있음을 볼 수 있다고 가정합니다.

이것은 포럼에서 제안한 "모두"삭제를 실행 한 후 찍은 스크린 샷입니다.

내 질문은 여전히 ​​똑같습니다. neo4j의 모든 노드와 모든 관계를 어떻게 삭제합니까?

답변:


246

2.3.0부터 3.3.0까지

MATCH (n)
DETACH DELETE n

문서

2.3.0 이전

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

문서


2
그러나 Neo4j 문서의이 샘플은 "이 쿼리는 많은 양의 데이터를 삭제하기위한 것이 아니라 작은 예제 데이터 세트를 가지고 놀 때 유용합니다."라고 말합니다. [R] - - 원더 그것은 MATCH ()을 수행하는 것이 좋습니다 경우 () DELETE R을 다음 할 MATCH (N) DELETE N
조지 Birbilis

2
@GeorgeBirbilis, 많은 양의 데이터에 대해이 작업을 수행하려면 작업을 여러 트랜잭션으로 분리하고 재시도 메커니즘을 구현해야합니다.
Bob B

1
하지 않도록 재 시도가,하지만 그것을 할 수있는 반복적 인 방법을 필요로 스테판 ARMBRUSTER로 응답 볼 수 있는지 여부를 stackoverflow.com/questions/29711757/...을 (나는 또한 별도의 대답에 가지고 내 블로그 게시물 링크의 끝에 그것을 언급)
George Birbilis 2015 년

2.3 답변 쿼리가 작동하지 않습니다. @GeorgeBirbilis 제안은 그렇습니다.
aliteralmind

@aliteralmind 판단 neo4j.com/docs/2.3.0/query-delete.html 아마도 문제는) 이후에 개행 문자가 필요하거나 적어도 공백 문자가 필요하다는 것입니다. 현재 쓰기 때문에 ...) 오타 (또한 DETACH DELETE를 같은 줄에 유지해야하지만 필요한지 확실하지 않음). 기사에는 여전히 "이 쿼리는 많은 양의 데이터를 삭제하는 것이 아니라 작은 예제 데이터 세트를 가지고 놀 때 유용합니다."라고 여전히 나와 있습니다.
George Birbilis

6

아마도 올바르게 수행하고있을 것입니다. 대시 보드에만 더 높은 ID를 사용하여 "활성"노드 수, 관계가 표시되지 않지만 관계가 표시됩니다. 그것은 단지 유익합니다.

그래프가 비어 있는지 확인하려면 다음 명령을 실행하십시오.

START n=node(*) return count(n);
START r=rel(*) return count(r);

둘 다 0이면 삭제가 완료된 것입니다.


나중에, 그건 사실이야하지만 대시 보드는 둘 이상 표시하지 않고 가장 높은 ID
Huei 탄

예, 이것이 그들이 프로그래밍 한 방식입니다. 수십억 개의 노드가있는 클러스터가있을 때 수동으로 계산하고 싶지 않기 때문입니다. 하지만 어딘가에서 누군가가 더 깊이 들어가서 일종의 자바 스크립트 수정을 만드는 것을 보았습니다. 운이 좋으면 게시물을 Google에 올릴 것입니다.
ulkas 2013 년

5

큰 데이터베이스의 경우 디스크에서 데이터베이스를 제거하거나 (처음에 엔진을 중지 한 후) Cypher에서 다음과 같이 사용해야합니다.

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
WITH n,r LIMIT 50000
DELETE n,r
RETURN count(n) as deletedNodesCount

https://zoomicon.wordpress.com/2015/04/18/howto-delete-all-nodes-and-relationships-from-neo4j-graph-database/ 에서 다양한 답변에서 수집 한 자세한 정보를 참조 하십시오.


2

Neo4j는 관계가있는 노드를 삭제할 수 없습니다. 노드를 삭제하려면 먼저 관계를 삭제해야합니다.

그러나 간단한 chyper로 "ALL"노드와 "ALL"관계를 삭제하는 간단한 방법입니다. 다음은 코드입니다.

일치 (n) 상세 삭제 n

-> DETACH DELETE는 Match로 모든 노드와 관계를 제거합니다.


0

예를 들어 노드 이름이 abcd이면 아래 쿼리가 작동합니다.

MATCH (n:abcd)
DETACH DELETE n

레이블이 "abcd"인 노드와 모든 관련 관계 만 삭제됩니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.