Я новичок в neo4j и пытаюсь отобразить самый длинный путь к известному узлу. В этом примере есть только один прямой путь. (Например, node1 => node2 => node3 => node4 => node5 => node6). Как я могу написать этот запрос?Учитывая свойство в отношениях, как вернуть атрибуты пути и узла?
Условение заключается в ограничении только отношений и с определенным свойством. Например, все отношения являются типами: KNOWS, но тогда есть атрибут на нем «signal», и я хочу запускать запрос только для отношений r: KNOWS, где r.signal = 10.
Ниже приведено что работает, чтобы получить последние два узла в пути:
MATCH (end)<-[r:knows]-(node)
WHERE r.signal = 10
AND end.name = 4
RETURN node.name, end.name, r.signal
Вот моя следующая попытка с помощью *, чтобы получить все длины, и комбинацию фильтра и извлечь для обработки коллекции:
MATCH (end)<-[r:knows*]-(node)
WHERE end.name = 4
WITH end, node, [x IN r WHERE x.signal = 10 | x.signal] as signals
RETURN node.name, end.name, signals
Но это все еще не совсем верно, так как он возвращает все итерации, и только пара s. Я хотел бы найти самый длинный путь и вернуть массив всех имен узлов (не только пары за раз). Любые указатели на то, как подойти к этому, очень ценятся, или полезные ссылки на учебные пособия. Я уже сделал онлайн-обучение neo4j.