Neo4j

2017-12-18 2 views
2

에 사이퍼 쿼리 결과에서 노드를 제거 I 다음 사이퍼 코드를 가지고 :Neo4j

MATCH (n) 
WHERE toLower(n.name) STARTS WITH toLower('ja') 
RETURN n 

이 대소 문자를 구분하지 쿼리가 자신의 이름이 문자열 "JA"로 시작하는 모든 노드를 반환합니다. 예를 들어 db에서 이것을 실행하면 [ "Javier", "Jacinto", "Jasper", "Jacob"]이 반환됩니다.

이 목록에서 원치 않는 노드를 제거하려면이 스크립트가 필요합니다. 두 개의 노드가 반환되지 말아야 함을 나타내는 [ "Jasper, Javier"]가 포함 된 배열이 데이터 액세스 계층에 전송되고 [ "Jacinto", "Jacob"]

어떻게해야합니까?

답변

2

항목이 당신이 말할 수 제외해야 쿼리하기 전에 당신이 알고있는 경우 당신은 또한 매개 변수로이 목록에 전달할 수 있습니다

MATCH (n) 
WHERE toLower(n.name) STARTS WITH toLower('ja') 
AND NOT (toLower(n.name) IN ['jasper', 'javier']) 
RETURN n 
+0

합니다. –

+1

Btw. 최상의 성능을 위해서는 속성에 소문자 변형을 저장하고 색인을 생성하십시오. 그런 다음 STARTS WITH 및 IN에 대한 색인 지원을받습니다. –

+0

분명히 답이 추가 되었어야합니다. thx –