[英]How to apply a static has step on all the visited nodes/edges for a given traversal gremlin query
我們將用戶權限標記為每個節點和邊上的屬性(SET 基數)。 想知道在給定遍歷 gremlin 查詢的所有訪問過的節點/邊上應用 has 步驟的最佳方法是什么。
就像一個非常簡單的遍歷查詢:// 從倫敦希思羅機場 (LHR) 到美國機場的航班
g.V().has('code','LHR').out('route').has('country','US').values('code')
在使用上述查詢遍歷時has('permission', 'team1')
將has('permission', 'team1')
到所有訪問過的頂點和邊。
您可以考慮兩種方法。
對於TraversalStrategy
您將開發一個類似於SubgraphStrategy
或PartitionStrategy
,它們將獲取您的用戶構建權限,然后在out()
/ in()
類型的步驟之后自動注入必要的has()
步驟。 這里的缺點是你的TraversalStrategy
必須用 JVM 語言編寫,如果使用 Gremlin Server,則必須在服務器上安裝。 如果您打算以任何方式從客戶端配置此TraversalStrategy
,您將需要構建自定義序列化程序以使其成為可能。
對於 DSL,您將為out()
/ in()
類型的步驟創建新的導航步驟,並且它們將插入導航步驟和has()
步驟的適當組合。 DSL 方法很好,因為您可以用任何編程語言編寫它並且它可以工作,但它不允許服務器端配置,並且您必須始終確保客戶端在查詢圖形時使用 DSL。
我們將用戶權限標記為每個節點和邊上的屬性(SET 基數)。
最后一點,“SET cardinality”我假設您的意思是multi-properties 。 邊不允許這些,所以你只能在頂點上標記這樣的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.