有没有办法更新Marklogic-9中MarkLogic-8中摄取的双时态文档?目前,临时更新api仅适用于在ML-9或更高版本中摄取的文档。请建议。生成以下错误:
找不到元数据TemporalDocURI。临时节点更新内置仅适用于使用ML9或更高版本创建的临时文档
为了升级它们,您只需要使用ML9在它们上运行temporal:document-insert。您应该能够在不对文档内容进行任何更改的情况下执行此操作以进行“干净”升级。
为了使ML-9中的ML-8双时态文档可更新,我们需要将新的元数据“temporalDocURI”添加到我们想要进行更新的现有文档URI中。
示例代码:
let $uri := "/documents/test.xml"
return xdmp:document-put-metadata(
$uri,map:map(<map:map xmlns:map="http://marklogic.com/xdmp/map">
<map:entry key="temporalDocURI">
<map:value>{$uri}</map:value>
</map:entry>
</map:map>))
将元数据添加到我们想要更新的双时态文档后,节点更新或插入的临时apis将适用于ML-9之前插入的所有文档。
注意为了使'xdmp:document-put-metadata'API能够处理临时文档,它将需要覆盖临时文档所属的时间集合的权限,如果进行更改的用户不是管理员用户,那么需要为用户添加粒度执行权限,然后执行'xdmp:document-put-metadata'。