使用java客户端api批量修补Marklogic数据库中的文档

使用java客户端api批量修补Marklogic数据库中的文档,java,marklogic,marklogic-9,Java,Marklogic,Marklogic 9,我有几个json文档,如下所示:- { 状态:待报告, 日期:2017/11/11 .... } 我只想通过将状态字段值从“to_BE_REPORTED to REPORTED”替换为“to_BE_REPORTED to REPORTED”来更新或修补文档,并且我想进行批量更新,因为我有数千个文档。我正在使用DocumentPatchBuilder,但它不支持批量更新 另一方面,我可以看到Marklogic很少有使用docManager.newWriteSet进行批量写入然后向其中添加文档的概念

我有几个json文档,如下所示:-

{ 状态:待报告, 日期:2017/11/11 .... }

我只想通过将状态字段值从“to_BE_REPORTED to REPORTED”替换为“to_BE_REPORTED to REPORTED”来更新或修补文档,并且我想进行批量更新,因为我有数千个文档。我正在使用DocumentPatchBuilder,但它不支持批量更新

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


还有什么我可以试试的吗?

我建议大家在网上多读一些。它应该包含关于如何进行各种更新的各种代码片段


我建议大家在网上阅读。它应该包含关于如何进行各种更新的各种代码片段


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

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

正确,ApplyTransformListener将允许QueryBatcher对匹配迭代器提供的查询或URI的所有文档应用服务器端转换。您可以轻松地创建一个PatchListener,在QueryBatcher提供的每个uri上应用补丁。正如您所注意到的,由于没有批量调用,因此需要更长的时间才能运行。但是代码编写和维护应该不会太难。而且QueryBatcher将在多个线程中处理文档,因此它将比等效的for-loop运行得快得多。正确,ApplyTransferorMLister将允许QueryBatcher对与迭代器提供的查询或URI匹配的所有文档应用服务器端转换。您可以轻松地创建一个PatchListener,在QueryBatcher提供的每个uri上应用补丁。正如您所注意到的,由于没有批量调用,因此需要更长的时间才能运行。但是代码编写和维护应该不会太难。QueryBatcher将在多个线程中处理文档,因此它将比等效的for循环运行得快得多。