2014-08-27 2 views
4

노드의 레이블 중 하나와 일치해야하는 상황이 있습니다.Neo4j 여러 레이블 일치

우리는

(n)-[:KNOWS|LOVES]->(m) 

우리는이 같은 노드 레이블을 일치시킬 수 있습니다와 같은 관계 유형을 위해 그것을 할 수 있습니까? 예.

MATCH (c:computer)<-[:belongs_to]-(comp:HP|IBM) 
return comp 

현재 제가 시도한 결과와 더 간단한 방법이 있습니까?

MATCH (c:computer)<-[:belongs_to]-(comp) 
WHERE comp:HP OR comp:IBM 
return comp; 
+0

FWIW 내가 세 번째 예는 꽤 생각 : 나는 (! 내 건축 결함의 비트를 공개)에 맞게 꽤 많은 레이블을 가지고 있기 때문에

은 내가 간결하게이 문제를 해결하기 위해 다음과 같은 발견 간단하고 좋은 접근법. OPTIONAL MATCH (http://docs.neo4j.org/chunked/stable/query-optional-match.html)를 사용하여 조사 할 수도 있지만 결과 쿼리는 가지고있는 것보다 간단하지는 않습니다. – FrobberOfBits

답변

6

내가

WHERE 'HP' IN labels(comp) OR 'IBM' IN labels(comp) 

WHERE comp:HP OR comp:IBM 

하는 일 것인가를 생각 :

MATCH (c:computer)<-[:belongs_to]-(comp) 
WHERE 'HP' IN labels(comp) OR 'IBM' IN labels(comp) 
return comp 
1

마지막 쿼리의 형태는 적어도 간단하고 이해를보다 쉽게 ​​작성하는 것입니다 같은 방식으로 두 번째 것은 간단하다.

0

현재이 동일한 문제가 있습니다.

MATCH (n:computer) 
WHERE any(label in labels(n) WHERE label in ['HP', 'IBM']) 
RETURN n 
관련 문제