2017-02-15 188 views
2

場景:查找哪個是員工體驗最多的職位頂點出現邊緣WorkedAs並且邊緣屬性爲workedForYears具有該經驗在那個工作年內。如何從一個頂點獲得邊緣屬性的最大值的邊緣

我用

g.V().has('EmployeeId','1234').outE('WorkedAs').values('workedForYears').max() 

這將返回我的整數。有什麼辦法可以獲得優勢嗎?

回答

2

您可以使用order().by().limit(1)模式而不是max(),因此您不會將遍歷中的項目轉換爲整數。

g.V().has('EmployeeId','1234').outE('WorkedAs').as('e') \ 
    .order().by('workedForYears', decr).limit(1).select('e') 

注意,我使用的as()步驟(As Step docs)標記在的Gremlin遍歷一個特定的點。然後在其他處理之後,您可以使用select()跳回到該特定點。

+2

你不需要跳回到「e」,你實際上仍然在「e」。 –

+0

噢謝謝Jason,但是這會影響處理時間,考慮到我在1000個以上邊緣的較大規模上進行處理,因爲我們使用的是限制步驟,它存儲了來自訂單的所有1000個結果並給予我們第一個結果。儘管在這種情況下,如果一個員工做了1000個我剛剛問過的工作,這樣我就可以在數據上使用1000個以上的邊 –