중요하지 않은 편집 중요 편집으로 이동.cypher NOT IN 검색어로 선택 일치
나는 다음과 같은 쿼리를 가지고 :
MATCH (n)
WHERE (n:person) AND n.id in ['af97ab48544b'] // id is our system identifier
OPTIONAL MATCH (n)-[r:friend|connected|owner]-(m)
WHERE (m:person OR m:dog OR m:cat)
RETURN n,r,m
이 쿼리는 특정 사람과의 관계를 가진 모든 사람, 개, 고양이를 반환합니다. 이 쿼리 결과에 포함되지 않는 모든 노드 & 관계를 받도록 설정하고 싶습니다. 이 SQL 인 경우
그것은 내가 옵션 MATCH는 문제가있는 부분이라고 생각
select * from graph where id NOT IN (my_query)
될 것이다. 어떻게 할 수 있습니까? 조언이 있으십니까?
감사합니다.
- 중요 편집 -
얘들 아, 내 질문하지만 내 요구 사항 변경에 대한 유감이 변경되었습니다. 나는 전체 그래프 (모든 노드와 관계)를 ID별로 특정 노드를 제외하고 연결 및 연결 해제해야한다. 다음 쿼리는 작동하지만 더 많은 ID가있는 경우 단일 ID에만 작동합니다.
MATCH (n) WHERE (n:person)
OPTIONAL MATCH (n)-[r:friend|connected|owner]-(m) WHERE (m:person OR m:dog OR m:cat)
WITH n,r,m
MATCH (excludeNode) WHERE excludeNode.id IN ['af97ab48544b']
WITH n,r,m,excludeNode WHERE NOT n.id = excludeNode.id AND (NOT m.id = excludeNode.id OR m is null)
RETURN n,m,r
는 또한 나는 간단한 쿼리 시도 :
MATCH (n) WHERE (n:person) AND NOT n.id IN ['af97ab48544b'] return n
을하지만이 사람은 관계 (I 연결이 끊어 노드도 필요 기억)를 반환하지 않습니다.
전체 그래프에서 특정 노드를 제외하려면 어떻게합니까? 여기에는 노드와 관계, 연결된 노드 및 연결이 끊어져 있습니다.
분명히하기 위해 다음과 같은 사람과 연결된 모든 노드를 찾고 있습니다. 명/: 개/: 연결 고양이 : 친구/: 연결/: 소유자 관계? 아니면 모든 것을 찾으려고합니까? 노드와의 관계가 존재하지 않는 사람입니까? 또는 쿼리에서 사람 노드 (및 연결된 노드)를 포함하지 않는 전체 노드에서 모든 노드를 찾으려고합니까? 원하는 출력의 예는 무엇입니까? – InverseFalcon
SQL 문과 문제 설명에서 유추 한 'person'과 연결되어 있지 않은'person','dog','cat'을 모두 특정 id로 찾으려고합니다. –
마지막 편집을 읽어주십시오. 불행히도 내 요구 사항이 변경되었습니다. –