2017-09-27 196 views
1

在Marklogic数据库文件批量修补我有几个JSON文档象下面这样: -使用Java客户端API

{ 状态:TO_BE_REPORTED, 日期:2017年11月11日 .... }

我想通过仅将状态字段值从TO_BE_REPORTED替换为REPORTED来更新或修补文档,并且希望执行批量更新,因为我拥有数千个文档。我正在使用DocumentPatchBuilder,但它不支持批量更新。

另一方面,我可以看到Marklogic有几个使用docManager.newWriteSet进行批量写入的概念,然后向其添加文档,但它不支持文档修补?

我还有其他的事情可以尝试吗?

回答

0

我建议您阅读Data Movement SDK。它应该包含有关如何进行各种更新的各种代码片段。

HTH!

+0

正确的,ApplyTransformListener将允许QueryBatcher针对所有匹配查询的文档或Iterator提供的uris应用服务器端转换。你可以很容易地创建一个PatchListener,在QueryBatcher提供的每个uri上应用一个补丁。如你所注意的,这将需要更长的时间,因为没有批量呼叫。但是代码不应太难编写和维护。 QueryBatcher将在多个线程中处理这些文档,所以它的运行速度要比等效的for-loop快得多。 –

0

CoRB2是一个用于批量更新的社区构建工具。您提供了一个URI模块,用于标识哪些文档将被更新,并提供一个处理模块来指定要进行的更改。这些模块可以用XQuery或JavaScript编写(我相信是正确的;它一直支持XQuery,我认为他们前一段时间添加了JS)。它不使用Java客户端API,但应该满足您的需求。