2016-07-07 2 views
0

Neo4j를 처음 사용하고 무비 데이터베이스 예제에서 몇 가지 쿼리를 시도했습니다. 역할 이름에 "Joe"라는 단어가 포함 된 모든 배우 및 영화 조합을 찾고 싶습니다. 어떻게해야합니까?Neo4j 3.0.3의 문자열 콜렉션에서 검색하는 방법

예를 들어 전체 역할 이름을 아는 경우 쿼리를 수행 할 수 있습니다. 조 뱅크스. 내가 그 사용되는 쿼리입니다 -

MATCH (p:Person)-[r:ACTED_IN]-(movie:Movie) 
WHERE 'Joe Banks' in (r.roles) 
RETURN p,movie,r.roles; 

답변

2

list predicate functionany 사용

MATCH (m:Movie)<-[r:ACTED_IN]-(a:Person) 
WHERE any(role in r.roles WHERE toLower(role) CONTAINS toLower("joe")) 
RETURN m,r,a 
: 당신이 toLower 기능을 사용할 수 있습니다 대소 문자를 구분 문자열 비교를 위해

MATCH (m:Movie)<-[r:ACTED_IN]-(a:Person) 
WHERE any(role in r.roles WHERE role CONTAINS "Joe") 
RETURN m,r,a 

편집

+0

감사합니다. ! 이 검색 대소 문자를 구분하지 않아도됩니까? –

+0

'toLower' 함수로 문자열 비교 연산자의 양쪽을 래핑 할 수 있습니다. –

+0

toLower() 또는 toUpper() 또는 이와 유사한 메서드를 사용하면 쿼리에서 속성에있는 모든 인덱싱을 이용할 수 없다는 점을 명심하십시오. – InverseFalcon

관련 문제