Итерация по вложенному списку Cypher - PullRequest
0 голосов
/ 22 мая 2019

Я работаю над этим запросом, где мне нужно найти путь от узла к заданному списку узлов и заданному списку отношений.

Проблема в том, что WHERE type(rel) in foundRels Я хочу выполнить итерациюнад этим списком и сделайте нечеткое совпадение строк, а не точное совпадение строк, но я не могу перебрать 2 списка.

Это мой запрос Cypher.

MATCH path=(`C1`: COMPETENCY { name: 'C1' })-[*]->(e2)
WITH ['TRAVEL_TO'] as foundRels, ['CHENNAI'] as foundNodes
WHERE ANY (rel in relationships(path) WHERE type(rel) in foundRels)
AND ANY (node in nodes(path) WHERE node.name in foundNodes) 
RETURN apoc.path.elements(path) as pathElements

Надеюсьдает некоторое представление.

1 Ответ

1 голос
/ 22 мая 2019

Используйте функции «содержит» и «раскрутить». Unwind раскроет ваш список на строки и будет искать строку в типе (rel). Добавьте приведенный ниже скрипт в ваш запрос.

UNWIND foundRels as fRel 
WITH foundNodes 
WHERE ANY (rel in relationships(path) WHERE type(rel) contains fRel)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...