2017-06-23 69 views
0

我想在OrientDB中查询,但我不知道它是如何工作的。OrientDB查询所有的边缘

我使用的图形API和我的数据库看起来是这样的:

类(V):@route(名称,开始位置,长度,目标)
类(V):@direction(目标,长度)

类(E):@has_A 类(E):@start_Direction 类(E):@has_Follower

边缘被连接到这样的顶点:
路线 - > has_A - >方向
路线 - > start_Direction - >方向
方向 - > has_Follower - >方向

现在我需要通过路由的名称来找到所有的追随者, 到目前为止什么工作原理是当我进入一个摆脱(的类startDirection)直接查询,例如:

select * from (traverse outE('has_Follower'),has_Follower.in from #??:?) where @class='direction' 

但现在我需要去的摆脱在路线的名称(这是问题),我试过至今:

select * from (traverse outE('has_Follower'),has_Follower.in from (select @rid from start_Direction where start_Direction.out = (select @rid from route where Name = 'nameOfroute'))) where @class='direction' 

但是这给了我一个空的查询,但是当我从start_Direction中输入rid时,我知道has_follower有效。

希望这是可以理解的,谢谢任何帮助提前。

+0

嗨单记录只是RETURN $elements,你可以添加一些示例数据?谢谢 –

回答

0

查询中的一个问题可能是,您必须使用IN而不是=,例如start_Direction.out IN (select...

总的来说,我认为你所需要的最简单的方法如下:

MATCH 
    {class:route, as:route} -start_Direction-> {} -has_Follower-> {as:direction, while:(true)} 
RETURN [email protected], route.Name, route.Start, route.Length, route.Goal, direction.Goal, direction.length 

或者,如果你想每行