2011-09-25 125 views
1

使用gremlin腳本和neo4j我嘗試查找兩個節點之間的所有路徑,最多下降10級。但我得到的從REST API響應是查找兩個節點之間的所有路徑

java.lang.ArrayIndexOutOfBoundsException: -1 

這裏是腳本:

x = g.v(2) 
y = g.v(6) 

x.both.loop(10){!it.object.equals(y)}.paths 

我通過文檔看去,卻無法找到有關這個用例什麼。

+0

似乎沒有定義? – nawroth

+0

@nawroth ha,很好的接收...在代碼示例中修復它,但即使定義了y,它似乎也不起作用。 – Max

回答

1

在Gremlin中,loop的參數是您希望去的步數,並且計算閉包以確定何時跳出循環。在這種情況下,因爲你有loop(10)它將回到太遠以至於沒有定義流水線的點。關於閉包,你不僅需要檢查對象是否是有問題的對象,在這種情況下,你應該停下來,而且還要檢查你是否已經完成了10個循環。

你真正想要的是這樣的:

x.both.loop(1){!it.object.equals(y) && it.loops < 10}.paths 

不過,我要補充一點,如果圖中的一個週期,這會很高興地一遍又一遍穿越週期,導致太多路徑。您可以使用一些巧妙的filtersideEffect來避免多次訪問節點。

欲瞭解更多信息,請參閱Loop Pattern Page on the Gremlin Wiki

相關問題