请求提供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
相关产品推荐
相关产品推荐

