有没有办法在 Marklogic-9 中更新在 MarkLogic-8 中摄取的双时态文档?目前,临时更新 API 仅适用于在 ML-9 或更高版本中提取的文档。请建议。正在生成以下错误:
未找到元数据 TemporalDocURI。时间节点更新内置仅适用于使用 ML9 或更高版本创建的时间文档
有没有办法在 Marklogic-9 中更新在 MarkLogic-8 中摄取的双时态文档?目前,临时更新 API 仅适用于在 ML-9 或更高版本中提取的文档。请建议。正在生成以下错误:
未找到元数据 TemporalDocURI。时间节点更新内置仅适用于使用 ML9 或更高版本创建的时间文档
为了升级它们,您只需要使用 ML9 在它们上运行temporal:document-insert 。您应该能够做到这一点,而无需对文档内容进行任何更改以进行“干净”升级。
为了使 ML-8 双时态文档在 ML-9 中可更新,我们需要将新的元数据“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>))
一旦元数据被添加到我们想要更新的双时态文档中,节点更新或插入的时态 api 将适用于在 ML-9 之前插入的所有文档。
注意为了使“xdmp:document-put-metadata”API 能够处理临时文档,它需要对临时文档所属的临时集合具有覆盖权限,并且如果进行更改的用户不是管理员用户,则需要为用户添加粒度执行权限,然后执行“xdmp:document-put-metadata”。