繁体   English   中英

使用py2neo获取最短路径中的节点

[英]Get nodes in shortestpath using py2neo

我目前正在使用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仅具有关系,而没有节点。

有人知道如何获得与网络相同的结果吗?

旁白:你的Cypher代码实际上并没有产生什么保证是一个单一的“最短路径”作为价值shortestpath 它只是产生所有长度的所有匹配路径。 为了回答您的问题,我将忽略此问题,并假设您想要的是现有行为。

如果结果不包含返回的路径中的节点,则可以仅在路径上使用NODES()函数,如以下代码段所示:

...
RETURN p as shortestPath, NODES(p) AS nodes, ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM