Neo4j Matching Переменное количество отношений из предыдущего запроса - PullRequest
0 голосов
/ 05 мая 2020

Код в Neo4j docs показывает следующее для сопоставления с переменным количеством отношений.

MATCH (charlie { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie)
RETURN movie.title

Я пытаюсь сделать это на основе предыдущего запроса, используя WITH, но не может найти правильный синтаксис. Все, что я пробую, выдает ошибку. Я стремлюсь к чему-то в форме:

MATCH p = ...
...
WITH length(p) AS len_p
MATCH (charlie { name: 'Charlie Sheen' })-[:ACTED_IN*len_p..len_p]-(movie:Movie)
RETURN movie.title

Однако этот синтаксис дает Neo.ClientError.Statement.SyntaxError.

Каков рекомендуемый способ сделать это?

1 Ответ

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

[EDITED]

Вы можете использовать процедуру apo c .path.expandConfig для выполнения запросов на отношения переменной длины с динамическими c границами.

Например (для получения путей длиной len_p, состоящих из ACTED_IN отношений, заканчивающихся узлом Movie):

...
WITH length(p) AS len_p
MATCH (charlie:Person {name: 'Charlie Sheen'})
CALL apoc.path.expandConfig(charlie, {
    relationshipFilter: 'ACTED_IN',
    labelFilter: '>Movie',
    minLevel: len_p,
    maxLevel: len_p
}) YIELD path
RETURN LAST(NODES(path)).title AS title
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...