在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>)
问题在于此代码返回超时。
我认为有一种更优雅的方式可以对整个收藏进行这种修改,也许有人会暗示。
谢谢!
答案 0 :(得分:3)
可以使用各种外部工具,例如Corb2和MLCP,但是您也可以在MarkLogic内部进行即席工作或更少的工作。您本质上需要做的就是分批处理。 Taskbot对此非常有用:
https://github.com/mblakele/taskbot
HTH!