我目前正在使用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
仅具有关系,而没有节点。
有人知道如何获得与网络相同的结果吗?
答案 0 :(得分:1)
在旁边:您的Cypher代码实际上没有产生保证作为“ shortestpath
”值的单个“最短路径”。它只是产生任何长度的所有匹配路径。为了回答您的问题,我将忽略此问题,并假设您想要的是现有行为。
如果结果不包含返回的路径中的节点,则可以仅使用路径上的NODES()函数,如以下代码片段所示:
...
RETURN p as shortestPath, NODES(p) AS nodes, ...