2013-04-18 3 views
1

나는 간단한 질문이지만 대답을 찾을 수 없다고 생각합니다. 나는 cypher를 사용하여 neo4j 1.6에서 관계를 삭제하는 여러 가지 방법을 시도했지만 오류가 발생했습니다.사이퍼를 사용하여 neo4j 1.6에서 관계 삭제

start n = node(1) match n-[r:KNOWS]-m delete r; 

나는 종류가 알고있는 모든 관계를 삭제하려면,하지만 오류를 얻고있다 -

==> SyntaxException: expected return clause 
==> "start n = node(1) match n-[r:KNOWS]-m delete r; " 

을 내가

start n = node(1) match n-[r:KNOWS]-m delete r return count(r); 

이 일을 나던주는 경우에도 마찬가지입니다.

참고 : 위의 문제는 neo4j 1.8에서는 발생하지 않지만 어떻게 든 neo4j 1.6에서 쿼리를 실행해야합니다.

+1

'neo4j-shell'을'traverse' 및'rmrel' 명령이나 javascript'eval'과 함께 사용할 수 있습니다. 저장소 형식이 변경되지 않았으므로 1.6에 대해 1.8 쉘을 실행할 수 있어야합니다. 그러나 전에 백업을 만들어야합니다 !! –

+0

답장을 보내 주신 Michael에게 감사드립니다. 나는 당신의 팬입니다! eval은 노드의 작은 변화에는 좋지만 많은 수의 노드 (백만)에 대해서는 그렇게하는 데 몇 시간이 걸리며 (예 : getRelationships()는 neo4j의 동일한 버전을 가진 다른 시스템이 아니라 한 시스템에서만 작동합니다). – hack3r

답변

2

당신은 1.6

돌연변이 사이퍼를 사용하여 적어도 사이퍼를 통해이 작업을 수행 할 수 없습니다 1.8에서 사용할 수 있습니다. API를 사용하여 삭제해야 할 수 있습니다.

+0

API는 관계/노드를 삭제하는 데 오랜 시간이 걸립니다. 각 crudx 작업에 REST 호출이 포함되어 있다고 가정합니다. – hack3r

0

많은 수의 노드에서이 작업을 수행하는 가장 좋은 방법으로 시간을 보내고 neo4j 1.6 인스턴스의 데이터 폴더를 neo4j 1.8 인스턴스로 이동 한 다음 Cypher 쿼리를 실행하면 neo4j에서 가장 빠른 방법과 성능을 발휘합니다 -shell/REST API 호출.