在edge之后停止遍历(orientdb)

时间:2017-06-14 12:01:06

标签: orientdb orientdb2.2

如何在边缘类之后停止遍历?

查询TRAVERSE bothE(), bothV() FROM ( SELECT FROM Title WHERE title_id IN [12] )的图表如下所示:

Relation graph example

如果我写的(蓝图):

TRAVERSE bothE("E14", "E5", "E6"), bothV() FROM ( SELECT FROM Title WHERE title_id IN [12] )

它没有给我V 970

如何构建一个返回我需要的部分的查询?如果存在橙色路线,我希望返回整个图表。

我测试过:TRAVERSE inE(..), outE(...), bothE()WHILE $parent.$current.@class != "E13"位它不起作用。

我已经看过https://stackoverflow.com/a/43776591/1194525,但如果我理解正确,可以在众所周知的井中使用MATCH。

1 个答案:

答案 0 :(得分:0)

我知道如何在2个查询中执行此操作,但可以使用改进,例如:在1个查询中执行此操作。

步骤1:按所有“右”边缘遍历图形。

TRAVERSE bothE("Prequel", "Sequel"), bothV() FROM (
  SELECT FROM Title WHERE title_id IN [12] )

第2步:从响应中获取所有顶点rid(在客户端中)

第3步:根据上一次查询中的所有顶点rid的“停止”边缘进行查询。

TRAVERSE bothE("Character"), bothV() FROM (
  SELECT FROM Title WHERE title_id IN [12, 431, 432, 433, ...] )
  MAXDEPTH 2

步骤4:合并客户端中的响应(顶点+边缘)。