Какой самый последний метод для получения всех узлов и пути их связи с использованием шаблонов в neo4j - PullRequest
0 голосов
/ 28 марта 2020

Я выполняю приведенный ниже запрос в neo4j, который возвращает мне все узлы вместе с путями его отношений

Запрос

MATCH (p:MyNode {name : "Vivek"})-[r*1..2]->(f:MyNode) return p,[x in r | type(x)] as rel,f

Результат

{vivek} ["knows"] {Rajesh}
{vivek} ["knows","friendof] {Ezhil}

Хотя этот запрос выполняется правильно и дает ожидаемые результаты, я получаю следующее предупреждение в браузере neo4j

Связывание связей со списком в шаблоне переменной длины: осуждается. (Привязка шаблона отношения переменной длины к переменной ('r') устарела и не будет поддерживаться в будущей версии. Рекомендуемый способ - привязать весь путь к переменной, а затем извлечь отношения: MATCH p = (.. .) - [...] - (...) WITH *, Relationship (p) AS r)

Просто чтобы обновить мой запрос, я пробовал множество способов, но ничего не помогло. Нужна помощь по этому аспекту.

Вот подходящая комбинация, которую я пробовал, как предложено в справке

MATCH p1 = (p:MyNode {name : "Vivek"})-[r*1..2]-(f:MyNode) WITH *, relationships(p1) AS r return p1

Результат

Несколько столбцов результата с одинаковые имена не поддерживаются (строка 1, столбец 60 (смещение: 59)) "MATCH p1 = (p: MyNode {name:" Vivek "}) - [r * 1..2] - (f: MyNode) WITH * , отношения (p1) AS r return p1 "

Обновление

enter image description here

1 Ответ

0 голосов
/ 28 марта 2020
MATCH p1 = (p:MyNode {name : "Vivek"})-[r*1..2]-(f:MyNode) 
WITH *, relationships(p1) AS r return p1

когда вы сделали * во второй строке, вы берете все столбцы, сгенерированные в первом списке, и это p1, p, r, f. Вот почему вы не можете снова создать псевдоним отношений (p1) как r. Чтобы получить результаты как в запросе-1. вы можете сделать это-

MATCH path=(p:MyNode {name : "Vivek"})-[r*1..2]->(f:MyNode) 
return p,[x in relationships(path) | type(x)] as rel,f
...