繁体   English   中英

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

[英]Get nodes in between two nodes cypher

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

样品

将得到一个样本结果。

  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 {

}

谢谢。

好吧,您是在查询中特别要求查找最短路径。 如果您的图形图像正确,则1和4之间的最短路径是直接链接。

因此,您应该摆脱它,然后尝试:

MATCH path = (s:Node{ Id: 1})-[Link*]->(e:Node {Id: 4})
RETURN path LIMIT 1

该查询将返回两个端点之间的最长路径:

MATCH path = (:Node{Id: 1})-[:Link*]->(:Node {Id: 4})
RETURN path
ORDER BY LENGTH(path) DESC LIMIT 1;

暂无
暂无

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

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