Gremlin查询需求:筛选User指向当前Company的HasRight边
完善后的Gremlin查询及说明
需求说明
查询路径为:Company关联Employees关联User。需从User中筛选出所有指向当前遍历到的Company的HasRight边(该用户可能同时拥有其他公司的权限)。
完善后的完整查询
g.V() .hasLabel("Company") .as('company') // 标记当前Company节点,供后续过滤引用 .project("Company","Employees") .by(__.identity()) .by(__.out("Has").hasLabel("Employee").not(__.has("IsDeleted",true)).has("Status",neq(5).and(neq(4))) .project("Employee","User","Rights") .by(__.identity()) .by(__.out("Has").hasLabel("User")) .by(__.out("Has").hasLabel("User").outE("HasRight") // 完成TODO:过滤出指向当前Company的HasRight边 .where(__.inV().is(__.select('company'))) .fold()) .fold()) .fold()
修改说明
- 标记当前Company节点:在
.hasLabel("Company")后添加.as('company'),给当前遍历的Company节点设置引用标签,方便后续过滤逻辑调用。 - 精准过滤目标边:将原TODO处的
.where(__.inV().hasLabel("Company"))替换为.where(__.inV().is(__.select('company'))),确保只筛选出当前User指向当前遍历的Company的HasRight边,而非任意Company的边。
内容的提问来源于stack exchange,提问作者uTILLIty
相关产品推荐
相关产品推荐

