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

请求提供MarkLogic中批量更新所有文档权限的XQuery代码

更新MarkLogic所有现有文档权限的XQuery实现

注意事项

  • 执行此代码需具备文档修改权限及权限管理权限(如admin角色或自定义权限管理角色)
  • 建议先在测试环境验证,避免影响生产数据
  • 可通过调整查询条件缩小处理范围,避免全量遍历带来的性能损耗

实现代码

xquery version "1.0-ml";

(: 定义要添加/更新的权限,格式为(角色名, 权限操作),操作可选read、insert、update、execute等 :)
let $target-permissions := (
  xdmp:permission("app-reader", "read"),
  xdmp:permission("app-maintainer", "update")
)

(: 遍历所有文档,可修改cts:uris()参数过滤目标范围,比如指定集合、文档类型 :)
for $doc-uri in cts:uris((), (), cts:and-query(()))
let $current-perms := xdmp:document-get-permissions($doc-uri)
(: 合并现有权限与目标权限并去重;若要完全替换现有权限,直接用$target-permissions即可 :)
let $updated-perms := fn:distinct-values(($current-perms, $target-permissions))
return
  (: 为文档设置更新后的权限集合 :)
  xdmp:document-set-permissions($doc-uri, $updated-perms)

代码说明

  • cts:uris():获取目标文档的URI列表,第三个参数可传入查询条件(如cts:collection-query("business-docs"))来限定处理范围
  • xdmp:document-get-permissions($doc-uri):读取指定文档的现有权限配置
  • fn:distinct-values():合并权限并去重,避免重复设置相同权限项
  • xdmp:document-set-permissions($doc-uri, $permissions):将更新后的权限集合应用到目标文档

内容的提问来源于stack exchange,提问作者Balan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:45:58