0

有没有办法在 Marklogic-9 中更新在 MarkLogic-8 中摄取的双时态文档?目前,临时更新 API 仅适用于在 ML-9 或更高版本中提取的文档。请建议。正在生成以下错误:

未找到元数据 TemporalDocURI。时间节点更新内置仅适用于使用 ML9 或更高版本创建的时间文档

4

2 回答 2

1

为了升级它们,您只需要使用 ML9 在它们上运行temporal:document-insert 。您应该能够做到这一点,而无需对文档内容进行任何更改以进行“干净”升级。

于 2018-06-27T13:59:36.613 回答
0

为了使 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”。

于 2018-07-04T07:49:55.137 回答