Neo4j - пункт об отношениях и степени разделения - PullRequest
2 голосов
/ 13 мая 2019

У меня есть следующий запрос Cypher, который работает, как я ожидал ....

MATCH (n1 {id: "25fd62e4-9566-4cbd-a443-b2b8d739d6f4"})-[r]-(n2)
WHERE r.hierarchy IN ['Ge', 'H']
RETURN n1, r, n2

Я хотел бы добавить степени разделения к этому запросу.

Это работает

MATCH (n1 {id: "25fd62e4-9566-4cbd-a443-b2b8d739d6f4"})-[r*1..4]-(n2)
RETURN n1, r, n2

.... но добавление в предложение WHERE не дает:

MATCH (n1 {id: "25fd62e4-9566-4cbd-a443-b2b8d739d6f4"})-[r*1..4]-(n2)
WHERE r.hierarchy IN ['Ge', 'H']
RETURN n1, r, n2

Любые советы приветствуются.

1 Ответ

2 голосов
/ 13 мая 2019

В случае шаблонов пути переменной длины (ваш последний запрос) , переменная r представляет собой набор отношений, а не одну связь.

Вы не можете проверить иерархию для всех отношений в коллекции с одним условием, вам нужно проверить hierarchy для каждого из них с WHERE и ALL вместе взятыми.

MATCH (n1 {id: "25fd62e4-9566-4cbd-a443-b2b8d739d6f4"})-[rels*1..4]-(n2)
WHERE ALL(r in rels WHERE r.hierarchy IN ['Ge', 'H'])
RETURN n1, rels, n2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...