You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从MarkLogic安全数据库获取全部角色(含Compartment角色)

获取MarkLogic安全数据库中所有角色(含Compartment角色)的方法

你当前使用的xdmp:get-current-roles()仅能返回当前用户已被赋予的角色ID,因此无法获取系统内所有角色,包括Compartment类型的角色。要实现获取安全数据库全部角色的需求,可采用以下两种方法:

方法1:直接查询安全数据库的角色文档

MarkLogic所有角色(含Compartment角色)都存储在默认名为Security的安全数据库中,且归属于http://marklogic.com/xdmp/roles集合。切换至安全数据库执行以下查询即可:

xquery version "1.0-ml";
import module namespace sec = "http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";

for $role-doc in collection("http://marklogic.com/xdmp/roles")
let $role-name := sec:role-get-name($role-doc)
let $role-type := sec:role-get-type($role-doc)
return (
  "角色名称: " || $role-name,
  "角色类型: " || $role-type,
  "---"
)

该查询会遍历所有角色文档,通过安全模块函数提取角色名称与类型,明确区分普通角色和Compartment角色。

方法2:使用admin模块枚举所有角色ID

若你拥有管理员权限,可借助admin模块的admin:role-get-all-ids()函数获取全部角色ID,再转换为角色名称:

xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";

let $all-role-ids := admin:role-get-all-ids(admin:get-configuration())
for $id in $all-role-ids
return xdmp:role-name($id)

注意事项

  • 执行上述查询需要足够权限:至少需具备安全数据库的读取权限,或拥有管理员/安全管理员角色。
  • Compartment角色属于细粒度权限控制组件,需确保当前账号有权限访问这类角色的元数据。

内容的提问来源于stack exchange,提问作者Dharmendra Kumar Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:32:37