【发布时间】:2018-10-22 17:52:38
【问题描述】:
我在 MarkLogic(第 9 版)中收集了大约 100 万个文档,结构如下:
<File>
<Id></Id>
<ModifiedAt></ModifiedAt>
<Author></Author>
<Title></Title>
</File>
我需要遍历整个集合,并将所有文档的 ModifiedAt 中的空间替换为 T
文档示例:
<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>)
问题是这段代码返回超时。
我认为有一种更优雅的方法可以对整个集合进行此修改,也许有人有提示。
谢谢!
【问题讨论】:
-
Marklogic 正在尝试在一个事务中完成此查询,这会导致超时错误。您可以将它们放入一万条记录中,或者使用 xdmp:spawn() 函数将它们放入队列中。
标签: xquery marklogic marklogic-9