获取两个节点密码之间的节点

时间:2019-01-17 22:06:30

标签: neo4j cypher

我正在尝试使用Neo4j CYPHER获取图中两个节点之间的所有中间节点。

Sample

将是一个示例结果。

  1. 1和4之间的路径应返回1、2、3和4。
  2. 1和3之间的路径应返回1、2和3。
  3. 4和6之间的路径应返回4、5和6。
  4. 1和6之间的路径应返回1、2、3、4、5和6。

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 {

}

谢谢。

2 个答案:

答案 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;