![](/img/trans.png)
[英]How to traverse from a vertex using ordered edges and sustain ordering for two steps away
[英]Writting SQL command to traverse Vertex on Edges conditions
想象一下以下架構
假設每個邊都是“manage”類型,屬性“permissions”設置為“rw”或“r-”或“ - ”,每個頂點都是Account類型。
在這里,賬戶3無法在賬戶5中寫入,但由於賬戶1能夠在賬戶3中寫入,我希望賬戶1能夠在賬戶5中寫入。
我想要做的是一個Java函數,能夠檢查連接的用戶(帳戶1)是否能夠在作為參數給出的帳戶中寫入。 因此,我必須檢查轉到待修改帳戶的第一個邊緣是否具有寫入權限。 (希望很清楚)
我認為它有一個遞歸函數,但我想找到一種方法來使用SQL命令。
我在考慮使用“$ depth”關鍵字
select from (traverse out('manage') from #1 while $depth <= 1) where @class='Account'
我需要在某處使用“where permissions ='rw'”這樣的東西,但是我找不到如何使用它來獲取Edge實例。
一旦條件已經實現了第一個傳出邊緣,我將需要繼續遍歷邊緣,不再有這種情況。
可能是不可能的,請讓我知道
並告訴我它是否不夠清楚
謝謝 !
create class Account extends V
create class Manage extends E
create property Manage.permissions string
create vertex Account set name = 'dummy' #12:0
create vertex Account set name = 'account1' #12:1
create vertex Account set name = 'account2' #12:2
create vertex Account set name = 'account3' #12:3
create vertex Account set name = 'account4' #12:4
create vertex Account set name = 'account5' #12:5
create edge Manage from #12:1 to #12:2 set permissions = "r-"
create edge Manage from #12:2 to #12:4 set permissions = "rw"
create edge Manage from #12:1 to #12:3 set permissions = "rw"
create edge Manage from #12:3 to #12:5 set permissions = "r-"
我相信這是上述情況。 您可以:
traverse out('Manage')
from (
select expand(outE('Manage')[permissions='rw'].in) from #12:1
)
這將返回所有帳戶#12:1具有rw權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.