繁体   English   中英

使用OrientDB递归遍历有向边

[英]Traverse directed edges recursively with OrientDB

我试图递归遍历给定节点的出站边,但不是入站边。 我想在查询结果中输出边和顶点。

在下图中,从(a)开始,我需要(a),(b),(c),(d),(e),包括边缘,但不包括(c)之后的部分,即<-- (x)

(a) -->  (b) --> (c) <-- (x)
 ˙-->  (d) --> (e)

如果我尝试执行以下操作,那么它会以递归方式遍历所有内容,而不管边缘方向如何,因此也返回(x):

TRAVERSE * FROM (SELECT FROM a) LIMIT -1` 

如果我不t traverse *, but outE()`,它只检索起始节点及其直接邻居:(a),(b),(d),所以它不进行递归。

traverse outE() from (SELECT FROM a) LIMIT -1

我也尝试按照这里的文档,并遍历V.out, E.in但它只返回(a)没有遍历。

traverse V.out, E.in from (SELECT FROM a) LIMIT -1`

也试过玩变种,比如WHILE $depth < 10 ,但这没有任何区别,现在我被卡住了。

运行OrientDB 2.0.12

图表: 图形朋友模型表示

遍历查询从#33开始递归获取传出边:289990:

traverse out('IsFriendsWith') from #33:289990

遍历查询的输出

遍历查询以递归方式获得多个边缘类传出顶点:

traverse out('IsFriendsWith'), out('secondEdgeClassName') from #33:289990

遍历查询以递归方式获取边和顶点实例:

traverse out('IsFriendsWith'), outE('IsFriendsWith') from #33:289990

暂无
暂无

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

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