如何在Marklogic中将目录从“/ Collections /”更新为“/ CollectionsCount /”
for $each in xdmp:directory("/collections/", "infinity")
return xdmp:node-uri($each)
result found:
/collections/Count2017-08-25.xml
/collections/Count2017-08-27.xml
/collections/Count2017-08-26.xml
/collections/Count2017-08-28.xml
我想更新目录成为“/ collectionsCount /”我使用的功能。提前谢谢。
/collectionsCount/Count2017-08-25.xml
/collectionsCount/Count2017-08-26.xml
....
答案 0 :(得分:4)
目录是基于文档URI的构造,因此为了更改目录,您需要删除旧文档并在新URI处插入新文档(使用新目录前缀代替旧目录)。
for $each in xdmp:directory("/collections/", "infinity")
let $old-uri := $each/xdmp:node-uri(.)
let $permissions := xdmp:document-get-permissions($old-uri)
let $collections := xdmp:document-get-collections($old-uri)
let $quality := xdmp:document-get-quality($old-uri)
let $properties := xdmp:document-properties($old-uri)
let $new-uri := concat('/collectionsCount/', substring-after($old-uri, '/collections/'))
return (
xdmp:document-insert($new-uri, $each, $permissions, $collections, $quality),
xdmp:document-set-properties($new-uri, $properties),
xdmp:document-delete($old-uri))
编辑已更新,以包含@ hunterhacker建议传播文档元数据。请注意,我故意将新文档分配给旧文档的林,因为在大多数情况下,我认为让数据库决定更好。