2016-05-17 62 views
0

我希望能夠從OrientDB遍歷查詢中排除某些頂點。OrientDB從遍歷中排除某些頂點

例如,

traverse * from (select from Location where ID = '1234') 

將遍歷所有頂點類在一個起點。我需要一種方法來爲特定類添加排除。

我知道這可能是可能的,如果我沒有使用*運算符,而是指定我想要的所有類。然而,它不適合,因爲我的程序甚至沒有意識到會有類。數據不斷變化,但排除的類將始終存在。

回答

2

我不知道我的理解正確。

我有這樣的結構。

enter image description here

欲遍歷從不含B類和相關的分支的節點的節點A1開始。

我用這個查詢

traverse * from #12:0 while @class<>"B" 

enter image description here

希望它能幫助。

UPDATE

我用這個查詢

select * from (traverse * from #12:0 while @class<>"B") where @class<>"E" or (@class="E" and [email protected]<>"B") 

enter image description here

更新2

select * from (traverse * from #12:0 while @class<>"B") where @this instanceof 'V' or (@this instanceof 'E' and [email protected]<>"B") 
+0

這是偉大的!但是,它仍然會返回懸掛邊緣。我們可以排除這些嗎? – benjovanic

+0

@benjovanic我編輯了答案 –

0

您可以通過使用difference()功能做到這一點:

select expand($c) 
let $a=traverse * from (select from Location where ID = '1234') 
$b=select from <class to exclude> 
$c=difference($a,$b) 

不知道的synthax,但它應該工作

再見,伊萬