2017-06-14 52 views
0

如何在邊類後停止遍歷?停止遍歷邊(orientdb)

用於查詢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 [email protected] != "E13"它不起作用。

我見過https://stackoverflow.com/a/43776591/1194525,但如果我理解正確,MATCH可以用在一個衆所周知的井中。

+0

嗨,預期的結果是什麼? Thx –

+1

可以附加一個數據庫導出進行測試嗎? –

+0

數據庫導出:https://app.box.com/s/m624p6nf04njj2vjsxtwn3h268ugm864 預期結果:藍色,沒有紅色和橙色。 (單件組+龍珠Z,沒有其他龍珠的)。 'E13' - 是'Character'關係 – bato3

回答

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步:在客戶端合併響應(頂點+邊緣)。