使用 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 *, butoutE()`,它只会检索起始节点及其直接邻居:(a)、(b)、(d),因此它不会进行递归。

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

我也尝试按照 here 的文档进行操作,并遍历了 V.out, E.in 但它只是 returns (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

递归地获取多于一条边的遍历查询class 传出顶点:

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

递归获取边和顶点实例的遍历查询:

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