2017-09-27 229 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,但應該滿足您的需求。