Как проверить, содержит ли узел связь с другим узлом с двумя конкретными кодами c в нем, но не конкретным кодом в Neo4j Cypher Query - PullRequest
0 голосов
/ 28 мая 2020

Я пробовал, как показано ниже

Match(A)-[r1]->(B) where B.Code IN ['aaa', 'bbb'] and B.Code <> 'ccc' 
return A, B

кажется неверным. Это возвращает записи B с 'aaa' и 'bbb', игнорируя 'ccc'. Я вообще не хочу возвращать B, если у него есть 'ccc'. Не просто игнорируйте это отношение.

Другие попытки: тот же результат, что и выше

Match(A)->[r1]->(B) where B.Code <> 'ccc'
With *
Match(A)->[r1]->(B) where B.Code IN ['aaa', 'bbb']
return A, B 

введите описание изображения здесь

Ее возвращает мне A с aaa, A с bbb ​​и X с aaa и X с bbb. Я ожидаю только X. Не могли бы вы поправить, где я делаю это неправильно.

1 Ответ

0 голосов
/ 28 мая 2020

Примерно так должно работать:

MATCH (A)-->(B)
WHERE B.Code IN ['aaa', 'bbb', 'ccc']
WITH A, COLLECT(B) AS bs, COLLECT(B.Code) AS codes
WHERE 'ccc' NOT IN codes
RETURN A, bs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...