首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j找到返回同一节点的所有路径

问Neo4j找到返回同一节点的所有路径
EN

Stack Overflow用户
提问于 2015-11-04 23:20:55
回答 1查看 360关注 0票数 1

我有实体(例如A、B、C),它们可以发送一个或多个协议(TCP、UDP和FTP),并且可以接收一个或多个协议,如下图所示。

我想要创建一个密码查询,它将找到从给定实体返回到同一个实体的所有可能路径,根据跳数排序从最短路径到最长路径。

​

​

可以在neo4j控制台上使用以下创建脚本进行在线测试:

代码语言:javascript
复制
create (a:Entity {name:'A'}), 
(b:Entity {name: 'B'}), 
(c:Entity {name: 'C'}), 
(d:Entity {name: 'D'}),  
(tcp:Protocol {name: 'TCP'}),  
(ftp:Protocol {name: 'FTP'}),  
(udp:Protocol {name: 'UDP'}),  
(a)-[:SEND]->(tcp), (tcp)-[:SEND]->(b), (tcp)-[:SEND]->(d), (b)-[:SEND]->(ftp), (ftp)-[:SEND]->(c), (ftp)-[:SEND]->(d), 
(d)-[:SEND]->(udp), (c)-[:SEND]->(udp), (udp)-[:SEND]->(a)

请确保首先单击顶部栏上的“清除数据库”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 23:20:55

代码语言:javascript
复制
MATCH path=(source { name:'A' })-[r*4..10]-> source
RETURN path, length(path)/2-1 AS hops
ORDER BY hops

解释:

{ name:'A' } -用于标识源节点

[4..10] -用于指定最小和最大跳数(包括)。在这种情况下,不可能低于4跳,因为最小跳数是4:

实体->协议->实体->协议->实体

length(path)/2-1 AS hops -计算路径中存在多少实体跳。注意,length(path)包含实体和协议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33533977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档