ID가

2016-10-05 3 views
0

인 NODE를로드 할 수 없습니다. 최근에 Neo4j 데이터베이스를 3 절 (3.0.6)으로 업그레이드했습니다. 그 이후로 Cypher로 노드를 삭제하려고 할 때 문제가 있습니다. 이는 업그레이드 이후 새로운 문제입니다. 그들은 사이퍼 쿼리는 다음과 같습니다ID가

MATCH (p) WHERE id(p) = 83624 
OPTIONAL MATCH (p)-[r]-(n) 
OPTIONAL MATCH (p)-[r2]-(n2) 
WHERE NOT ('Entity' in labels(n2)) 
DELETE r, r2, p, n2 

이 이제 오류 Unable to load NODE with id 83624

RETURN 대신 DELETE의 반환 노드와 정확한 쿼리가 발생합니다. 나는 또한 노드 DETACH DELETEDELETE 스와핑 시도했지만 그게 나에게 동일한 오류를 제공합니다.

이 문제는 이전에 해결책이없는 것으로 보입니다. 이 오류의 원인은 무엇입니까?

답변

0

이 쿼리는 약간 혼란 스럽습니다. 두 옵션 일치는 모두 p와 연결된 모든 노드와의 관계와 일치합니다.

내가하려는 일을 이해했는지 확인하십시오. ID로 노드를 찾은 다음 엔티티가 아닌 연결된 노드 (노드를 연결하는 관계)와 함께 노드를 삭제하십시오. 그게 맞습니까?

MATCH (p) WHERE id(p) = 83624 
OPTIONAL MATCH (p)--(n) 
WHERE NOT n:Entity 
DETACH DELETE n 
DETACH DELETE p 

노드를 분리하면 해당 노드에 연결된 모든 관계를 삭제하고, 당신은 단지 제로 관계가있는 노드를 삭제할 수 있습니다 그렇다면

,이 쿼리는 잘 작동 할 수 있습니다.

노드를 고유하게 식별하기 위해 내부 ID를 사용하는 것은 좋지 않습니다. 고유 한 고유 ID를 대신 사용하고 해당 레이블에 대해 해당 특성에 대한 고유 제한 조건을 작성하는 것이 좋습니다.

+0

갓, 나도 알아 냈어. 쿼리는'DETACH DELETE' 이전에 관계를 수동으로 삭제해야 할 때였습니다. 두 개의 절은 모든 관계를 가져 왔지만 일부 노드는 남겨 둡니다. 어쨌든 이것은 작동합니다. 도움에 감사드립니다. –