我想在OrientDB中进行查询,但我不知道它是如何工作的。
我正在使用Graph API,我的数据库看起来像这样:
class(V):@route(姓名,开始,长度,目标)
class(V):@ direction(目标,长度)
class(E):@has_A class(E):@start_Direction class(E):@has_Follower
边缘连接到顶点,如下所示:
路线 - > has_A - >方向
路线 - > start_Direction - >方向
方向 - > has_Follower - >方向
现在我需要找到路线名称的所有粉丝, 到目前为止,当我输入一个rid(类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中删除时,我知道有一个has_Follower它可以工作。
希望这是可以理解的,感谢您提前提供任何帮助。
答案 0 :(得分:0)
您的查询中的一个问题可能是start_Direction.out = (select...
,您必须使用IN
而不是=
,例如start_Direction.out IN (select...
。
总的来说,我认为最简单的方法就是如下:
MATCH
{class:route, as:route} -start_Direction-> {} -has_Follower-> {as:direction, while:(true)}
RETURN route.@rid, route.Name, route.Start, route.Length, route.Goal, direction.Goal, direction.length
如果您想要每行单个记录,则只需RETURN $elements