1

MarkLogic 版本:9.0-6.2

我正在使用 MLCP 将文档摄取到 STAGING DB 中。对于 STAGING DB 中的每个文档,我需要更新 FINAL DB 中的多个文档。

例如,暂存数据库文档包含带有退回指示符的电子邮件。我需要在 FINAL 中具有相同电子邮件 ID 的集合中的所有文档中更新反弹指示器。

我可以使用 Harmonize flow 来执行此操作吗?如何在 content.sjs 中编码以多次调用 writer.sjs?

我尝试在 writer.sjs 中使用循环来返回 FINAL 中的每个文档并应用 documentInsert(基本上是 writer.sjs 中的 FOR 循环),但行为并不一致。另外,我不确定这是否是 Harmonize flow 的正确用法。

我尝试编写自定义代码并通过 REST API 调用进行调用。这按预期工作。

请建议处理我的要求的最佳方法(Harmonize Vs Custom REST)。

4

1 回答 1

1

有一种相当优雅的方法可以做到这一点,但它不适用于 QuickStart UI。您可以使用 Final 作为源数据库运行协调流,并使用 cts:values 作为收集器源。

您运行输入并协调流程而不会产生副作用,一旦完成,您将启动一个单独的协调流程,该流程将在最终数据库中查找所有唯一的电子邮件地址。您将每个唯一的电子邮件地址作为 id 传递(通常包含文档 uri,但任何其他字符串也可以)。您在各个步骤中收集您需要的所有内容,然后在编写器中查询并遍历所有相关文档以根据需要设置指标。

运行流的 gradle 任务具有 sourceDB 属性,但您也可以对 Data Hub REST-api 执行相同操作:https ://marklogic.github.io/marklogic-data-hub/refs/gradle-tasks/ #marklogic-data-hub-flow-management-tasks

于 2019-03-18T08:18:04.527 回答