2017-06-23 97 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 

或者,如果你想每行