从原点发现一个类型的所有顶点
Discover all vertices of a type from origin
我正在使用图形数据库为权限系统建模。
这是一个示例场景:
一个用户 u1
拥有直接权限,并且也在一个组 g1
中,该组 g1
具有权限并扩展了另一个组。
一个用户也是manage
一个系统s1
并且可以将与s1
相关的权限授予其他用户。
基本上我需要做的就是获得我的 u1
的所有权限。
我怀疑这是一个简单的查询,但我在使用 gremlin 时遇到了困难。
我尝试了 repeat()
s、out()
s、emit()
s、path()
s 等的组合,但找不到我需要的。我已经尝试过 returns 要么节点多于需要(比如权限路径中的组节点,或者与系统相关的权限)要么节点少(比如未达到 G2
)
所以总结一下我需要的是:
gremlin> g.V('u1').__misteriousQueryThatShouldntBeThatHard()
==> v[p1]
==> v[p2]
==> v[p3]
==> v[p4]
感谢任何帮助。
如果 Kfir 对上一个问题的回答的唯一问题是将路径限制为某些边缘标签,您可以尝试:
g.V('u1')
.repeat(out('is-in', 'extends', 'has-permission').simplePath())
.until(hasLabel('Permission'))
我正在使用图形数据库为权限系统建模。 这是一个示例场景:
一个用户 u1
拥有直接权限,并且也在一个组 g1
中,该组 g1
具有权限并扩展了另一个组。
一个用户也是manage
一个系统s1
并且可以将与s1
相关的权限授予其他用户。
基本上我需要做的就是获得我的 u1
的所有权限。
我怀疑这是一个简单的查询,但我在使用 gremlin 时遇到了困难。
我尝试了 repeat()
s、out()
s、emit()
s、path()
s 等的组合,但找不到我需要的。我已经尝试过 returns 要么节点多于需要(比如权限路径中的组节点,或者与系统相关的权限)要么节点少(比如未达到 G2
)
所以总结一下我需要的是:
gremlin> g.V('u1').__misteriousQueryThatShouldntBeThatHard()
==> v[p1]
==> v[p2]
==> v[p3]
==> v[p4]
感谢任何帮助。
如果 Kfir 对上一个问题的回答的唯一问题是将路径限制为某些边缘标签,您可以尝试:
g.V('u1')
.repeat(out('is-in', 'extends', 'has-permission').simplePath())
.until(hasLabel('Permission'))