在Marklogic 9中更新MarkLogic 8提取的时态文档

时间:2018-06-27 13:49:54

标签: marklogic marklogic-9 bi-temporal

是否有一种方法可以更新在Marklogic-9中的MarkLogic-8中摄取的双时态文档?当前,临时更新API仅适用于ML-9或更高版本中提取的文档。请提出建议。 正在产生以下错误:

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

要使ML-8双时态文档在ML-9中可更新,我们需要在要进行更新的现有文档URI上添加新的元数据“ temporalDocURI”。

示例代码:

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”。