XQuery MarkLogic

时间:2018-10-22 17:52:39

标签: xquery marklogic marklogic-9

在MarkLogic(版本9)中,我有大约100万个文档,其结构如下:

<File>
    <Id></Id>
    <ModifiedAt></ModifiedAt>
    <Author></Author>
    <Title></Title>
</File>

我需要遍历整个集合,并用T替换所有文档中ModifiedAt的空间

文档示例:

     <File>
         <Id>12121</Id>
         <ModifiedAt>2011-06-08 14:29:29.000</ModifiedAt>
         <Author>Test</Author>
         <Title>Test</Title>
    </File>

字段ModifiedAt应该变为:2011-06-08T14:29:29.000

代码如下:

for $doc in fn:collection('File')
    return xdmp:node-replace($doc/File/ModifiedAt,<ModifiedAt>{fn:replace($doc/File/ModifiedAt,' ','T')}</ModifiedAt>)

问题在于此代码返回超时。

我认为有一种更优雅的方式可以对整个收藏进行这种修改,也许有人会暗示。

谢谢!

1 个答案:

答案 0 :(得分:3)

可以使用各种外部工具,例如Corb2MLCP,但是您也可以在MarkLogic内部进行即席工作或更少的工作。您本质上需要做的就是分批处理。 Taskbot对此非常有用:

https://github.com/mblakele/taskbot

HTH!