我希望能夠從OrientDB遍歷查詢中排除某些頂點。OrientDB從遍歷中排除某些頂點
例如,
traverse * from (select from Location where ID = '1234')
將遍歷所有頂點類在一個起點。我需要一種方法來爲特定類添加排除。
我知道這可能是可能的,如果我沒有使用*
運算符,而是指定我想要的所有類。然而,它不適合,因爲我的程序甚至沒有意識到會有類。數據不斷變化,但排除的類將始終存在。
我希望能夠從OrientDB遍歷查詢中排除某些頂點。OrientDB從遍歷中排除某些頂點
例如,
traverse * from (select from Location where ID = '1234')
將遍歷所有頂點類在一個起點。我需要一種方法來爲特定類添加排除。
我知道這可能是可能的,如果我沒有使用*
運算符,而是指定我想要的所有類。然而,它不適合,因爲我的程序甚至沒有意識到會有類。數據不斷變化,但排除的類將始終存在。
我不知道我的理解正確。
我有這樣的結構。
欲遍歷從不含B類和相關的分支的節點的節點A1開始。
我用這個查詢
traverse * from #12:0 while @class<>"B"
希望它能幫助。
UPDATE
我用這個查詢
select * from (traverse * from #12:0 while @class<>"B") where @class<>"E" or (@class="E" and [email protected]<>"B")
更新2
select * from (traverse * from #12:0 while @class<>"B") where @this instanceof 'V' or (@this instanceof 'E' and [email protected]<>"B")
您可以通過使用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,但它應該工作
再見,伊萬
這是偉大的!但是,它仍然會返回懸掛邊緣。我們可以排除這些嗎? – benjovanic
@benjovanic我編輯了答案 –