我正在尝试使用Neo4j CYPHER获取图中两个节点之间的所有中间节点。
将是一个示例结果。
1、2、3和4之间的路径直接具有1和4的组合距离。 4至6将具有与4,5,6相同的距离。
或者,如果有更长的路由可用,则进行密码查询以删除快捷方式。
我尝试了标准的路径查找命令,但每次都会返回1和4。
MATCH path = shortestpath((s:Node{ Id: 1})-[Link*]->(e:Node {Id: 4}))
RETURN path LIMIT 1
public class Node {
public long Id {get;set;}
}
public class Link {
}
谢谢。
答案 0 :(得分:0)
好吧,您在查询中特别要求查找最短路径。如果您的图形图像正确,则1到4之间的最短路径就是直接链接。
所以您应该摆脱它,然后尝试:
MATCH path = (s:Node{ Id: 1})-[Link*]->(e:Node {Id: 4})
RETURN path LIMIT 1
答案 1 :(得分:0)
此查询将返回两个端点之间的最长路径:
MATCH path = (:Node{Id: 1})-[:Link*]->(:Node {Id: 4})
RETURN path
ORDER BY LENGTH(path) DESC LIMIT 1;