抱歉,我是Graphing DB的新手!我在OrientDB中具有以下基本结构:
我需要获取permission
与给定的所有关联User
。permission
总是包含在中,Role
但是aRole
可以直接属于aUser
或a Team
。我还没有把它添加到图像,但之间的边缘User > Role
和Team > Role
是has
。和之间User > Team
的member
。
我当前的方法是:
SELECT permission FROM (
TRAVERSE any() FROM #23:0 WHILE $depth <=4
) WHERE @class='Role'
但是,我怀疑实现这一目标的效率更高。
除了使用any()
遍历外,还可以使用命名的边。
例如。如果可以user -belongsTo-> team
,user,team -hasPermission-> permission
您可以编写此查询,例如
SELECT FROM (
TRAVERSE out('belongsTo', 'hasPermission') FROM #23:0 WHILE $depth <=2
) WHERE @class='Role'
这将避免遍历不需要的分支。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句