내 프로젝트 중 하나에 neo4j를 사용하고 있습니다. 단일 속성 만있는 노드가 있습니다. name
ID를 사용하여 해당 노드를 얻고 싶습니다. 이미 ID가 있지만이 코드를 사용할 때
MATCH (s:SKILLS{ID:65110}) return s
아무것도 반환하지 않습니다. 여기에 내 노드가 있습니다.
쿼리가 잘못된 경우 번호를 사용하여 쿼리하는 방법
내 프로젝트 중 하나에 neo4j를 사용하고 있습니다. 단일 속성 만있는 노드가 있습니다. name
ID를 사용하여 해당 노드를 얻고 싶습니다. 이미 ID가 있지만이 코드를 사용할 때
MATCH (s:SKILLS{ID:65110}) return s
아무것도 반환하지 않습니다. 여기에 내 노드가 있습니다.
쿼리가 잘못된 경우 번호를 사용하여 쿼리하는 방법
답변:
MATCH (s)
WHERE ID(s) = 65110
RETURN s
이 ID
함수 는 노드 또는 관계의 ID를 가져옵니다. 이것은 호출 id
되거나 ID
사용자가 만든 속성과 다릅니다 .
CONSTRAINT
엔티티 추적을위한 고유 한 ID 속성 (이상적으로는 ) 만들기
경고 : 다음 답변이 잘못되었습니다! START는 레거시 인덱스에 액세스 할 때만 사용해야합니다 . Cypher 2.2 이상 에서는 비활성화되어 있습니다.
Neo4j는를 사용할 것을 권장
WHERE ID(n) =
하며, 또한 단일 조회 만 필요 하다고 명시합니다 (일치하는 ID를 찾기 위해 모든 노드를 스캔하지 않음).다른 사람이 같은 실수를하지 않도록이 답변을 유지합니다.
당신은 할 수 있습니다 사용 WHERE ID(s) = 65110
하지만,이 데이터베이스에있는 모든 노드의 ID를 확인합니다.
이를 수행하는 더 효율적인 방법이 있습니다.
START s=NODE(517) MATCH(s) RETURN s
Result Details
콘솔에서 다음 예제를 살펴보십시오 . console.neo4j.org/r/dbz1we(AllNodesScan 수행) 및 console.neo4j.org/r/9076wd(NodeById 수행)
+NodeByIdSeek
1 개의 노드에만 액세스 해야 하지만 어떤 이유로 +AllNodesScan
.