Neo4j: сопоставьте путь APOC, используя один узел как необязательный в указанном пути.

Я использую следующий шифрованный запрос neo4j на своем графике:

MATCH (start:N1{id:'xyz'})
CALL apoc.path.expandConfig(start, {sequence:'N1, a>, N2, b>, N3, c>, 
N4', maxLevel:3}) YIELD path
RETURN path
ORDER BY length(path) DESC

Теперь я хочу оставить N3 необязательным. Например, если ссылка N2-b->N3 недоступна, она должна проверить наличие N2-b->N4 и так далее. Я знаю, что могу сделать два отдельных запроса и проверить. Но есть ли способ сделать N3 необязательным в самом запросе?

Заранее спасибо!


person Yashvardhan Nanavati    schedule 07.08.2018    source источник


Ответы (1)


Нет, в настоящее время это невозможно. Если бы вместо этого можно было использовать другой узел, это сработало бы, так как вы могли бы принять другую метку вместо узла (или любую метку узла, если вам все равно), но здесь нет способа использовать последовательности. где количество узлов/отношений в определенной последовательности не является постоянным.

person InverseFalcon    schedule 07.08.2018
comment
хм, что-то вроде CALL apoc.path.expandConfig(start, {sequence:'N1, a>, N2, b>|c>, N3|N4, c>|d>, N4|N5', maxLevel:3}) YIELD path сработает? - person Yashvardhan Nanavati; 07.08.2018
comment
где, если на каждом уровне есть разные метки и узлы, мы можем при желании взять другой вместо первого, если первый не существует? @InverseFalcon - person Yashvardhan Nanavati; 07.08.2018
comment
Это может сработать, но имейте в виду, что это не будет тот или иной полный путь (b›, N3, c›, N4 vs c›, N4, d› N5), так что вы можете иметь (b›, N4, c›, N4) и другие подобные возможные комбинации - person InverseFalcon; 08.08.2018