Получить узлы в кратчайшем пути, используя py2neo - PullRequest
0 голосов
/ 10 июля 2019

В настоящее время я использую py2neo, чтобы использовать запрос по кратчайшему пути, код neo4j:

MATCH p=(c:Ciudad)-[*]-(l:Ciudad) 
WHERE c.nombre = '%s' and l.nombre = '%s' 
RETURN p as shortestPath, reduce(precio=0, r in relationships(p) | precio+r.precio) AS totalPrecio 
ORDER BY totalPrecio ASC LIMIT 1;

Когда я использую его в Интернете, он дает мне список узла 1- Связь - Узел 2, но когда я выполняю это, используя:

string= "MATCH p=(c:Ciudad)-[*]-(l:Ciudad) 
WHERE c.nombre = '%s' and l.nombre = '%s' 
RETURN p as shortestPath, reduce(precio=0, r in relationships(p) | precio+r.precio) AS totalPrecio 
ORDER BY totalPrecio ASC LIMIT 1;" %(salida, llegada)

n = graph.run(string)

shortestPath имеет только отношения, а не узлы.

Любой знает, как получить те же результаты, что и всеть?

1 Ответ

1 голос
/ 10 июля 2019

В сторону: Ваш Cypher-код на самом деле не производит то, что гарантированно будет одним «кратчайшим путем» в качестве значения для shortestpath. Он просто производит ВСЕ соответствующие пути любой длины. Чтобы ответить на ваш вопрос, я проигнорирую эту проблему и предположу, что вам нужно существующее поведение.

Если ваши результаты не содержат узлов в возвращаемых путях, вы можете просто использовать функцию NODES () на пути, как в следующем фрагменте:

...
RETURN p as shortestPath, NODES(p) AS nodes, ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...