2017-01-09 2 views
0

다음과 같은 노드가 있습니다. enter image description hereneo4j에서 제외 된 노드 수를 얻는 방법

노드 (l1)에 매핑되지 않은 모든 노드 (c1에서 c5까지)를 가져와야하므로 내 결과 노드는 (c2), (c4) 및 (c5)이어야합니다. Neo4j에서 어떻게 쿼리 할 수 ​​있습니다.

+0

c 노드는 모두 동일한 레이블입니까? 그렇다면 l1에 연결되지 않은 해당 레이블의 모든 노드 또는이 특정 하위 집합 만 찾고 있습니까? – InverseFalcon

+0

또한 데이터의 텍스트 표현을 제공 할 수 있습니까? 그림에서 두 개의 "l1"노드가있는 것처럼 보입니다. 맨 오른쪽 노드에 쓴 내용도 분명하지 않습니다. – cybersam

답변

0

당신은 원하는 노드에는 단방향 경로가없는에서 해당 노드를 선택해야합니다

MATCH (E {name: 'l1'}) WITH E 
MATCH (M) WHERE NOT (M)-[*]->(E) 
RETURN M 
0

본래의 솔루션이 될 것

(C, L 노드 레이블 R1은 관계 유형이다)
MATCH (c:C) 
WHERE NOT((c)-[:R1]->(l:L {...}) 
RETURN c 

여기서 (l:L {...})은 노드 l1을 식별하는 일부 필터입니다.

C 노드에서 많은 관계가 발생하여 느려질 경우. 다음을 시도해보세요.

MATCH (l:L {...})<-[:R1]-(c:C) 
WITH COLLECT(c) AS cs 
MATCH (c2:C) 
WHERE NOT c2 NOT cs 
RETURN c2 

데이터를 기준으로 두 가지를 선택해야합니다.

관련 문제