Orientdb 从节点检索所有路径

Orientdb 从节点检索所有路径,orientdb,Orientdb,我正在使用OrientDB社区版2.1.16 这是我的数据图表: 我正在尝试使用以下命令检索给定节点的所有路径: select $path from (traverse out('E1') from #13:5) 但我得到的是非常奇怪的: 我本以为通过二级节点(#13:1,#13:2,#13:3)的每条路径都会到达根节点(#13:0)。 比如: (#13:5).out[0](#13:4).out[0](#13:1).out[0](#13:0) (#13:5).out[0](#13:4

我正在使用OrientDB社区版2.1.16

这是我的数据图表:

我正在尝试使用以下命令检索给定节点的所有路径:

select $path from (traverse out('E1') from #13:5)   
但我得到的是非常奇怪的:

我本以为通过二级节点(#13:1,#13:2,#13:3)的每条路径都会到达根节点(#13:0)。 比如:

(#13:5).out[0](#13:4).out[0](#13:1).out[0](#13:0)
(#13:5).out[0](#13:4).out[1](#13:2).out[0](#13:0)
(#13:5).out[0](#13:4).out[2](#13:3).out[0](#13:0)
这是正确的还是什么

如果是,是否有可能得到这个结果? 我的意思是有一条从#13:5到#13:0的完整路径通过第二层的节点


谢谢

您得到的结果取决于策略是否具有遍历,您可以设置两种类型:深度优先、默认值和宽度优先。我想也许你对这两种策略感兴趣。有关更多信息,请查看此

深度优先战略

这是OrientDB用于遍历的默认策略。在回溯之前,它尽可能沿着每个分支进行探索。它是使用递归实现的。要了解更多信息,请查看深度优先算法。下面是使用深度优先策略遍历图形时执行的有序步骤:

深度优先树

广度优先战略

它检查所有相邻节点,然后依次检查每个相邻节点未访问的相邻节点,依此类推。将广度优先与等效的、但内存效率更高的迭代深化深度优先搜索进行比较,并与深度优先搜索进行对比。要了解更多信息,请查看广度优先算法。下面是使用广度优先策略遍历图形时执行的有序步骤:

宽度优先树

您得到的结果取决于策略是否具有遍历,您可以设置两种类型:深度优先、默认值和宽度优先。我想也许你对这两种策略感兴趣。有关更多信息,请查看此

深度优先战略

这是OrientDB用于遍历的默认策略。在回溯之前,它尽可能沿着每个分支进行探索。它是使用递归实现的。要了解更多信息,请查看深度优先算法。下面是使用深度优先策略遍历图形时执行的有序步骤:

深度优先树

广度优先战略

它检查所有相邻节点,然后依次检查每个相邻节点未访问的相邻节点,依此类推。将广度优先与等效的、但内存效率更高的迭代深化深度优先搜索进行比较,并与深度优先搜索进行对比。要了解更多信息,请查看广度优先算法。下面是使用广度优先策略遍历图形时执行的有序步骤:

宽度优先树 使用您的查询

select $path from (traverse out('E1') from #13:5)
您可以通过添加
*

select *,$path from (traverse out('E') from #9:5)
通过这种方式,您可以获得所有经过的顶点,以及从起始节点到达该顶点的路径。

使用您的查询

select $path from (traverse out('E1') from #13:5)
您可以通过添加
*

select *,$path from (traverse out('E') from #9:5)
通过这种方式,您可以遍历所有顶点,并获得从起始节点到达该顶点的路径