Dgraph如何实现组织机构树的递归查询


#1

组织机构结构:

请问,如何查询出 wf10 用户上级所有部门的所有用户,就是本图上的 wf01、wf02、wf03.
谢谢!


#2

问题已解决。

组织机构Schema

<name> :  string .
<subordinate>: uid . # 下级部门
<user>: uid . # 所属用户

用户Schema

<login_name>: string .
<name>: strng .

查询语句

{
  # 找到用户所属部门
  var(func:eq(login_name,"wf10")) {
    orgid as ~user
  }
  
  # 递归找到所有上级部门
  var(func:uid(orgid)) @recurse(depth: 10, loop: true){
      parentids as ~subordinate
  }
  
  # 找到所有上级部门包含的用户
  var(func:uid(parentids)) {
    userids as user
  }
  
  # 显示用户信息
  uuu(func:uid(userids)) {
    uid
    name
  }
}