具有特定 _id 的 NiFi DeleteMongo

时间:2021-03-20 20:32:30

标签: mongodb apache-nifi

所以我的流程是一个查询数据库表,用于从旗鱼获取 _id -> convertAvroToJson -> SplitJson -> EvaluateJsonPath -> DeleteMongo。

我的目标是删除 MongoDB 中任何具有 _id 的记录,该 _id 是由我的 QueryDatabaseTable 中的查询生成的。

我对如何将 _id 从我的查询流到我的删除 mongo 的删除感到困惑。我假设我想要类似 {"_id" : "$._id"} 的东西,其中 $._id 通过 EvaluateJsonPath 成为一个变量。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

来自 DeleteMongo 文档

<块引用>

此处理器使用流文件正文中提供的用户提供的查询从 Mongo 中删除。它必须是有效的 JSON 文档。用户可以选择删除单个文档或所有符合条件的文档。该行为可以使用相关的配置属性进行配置。此外,处理器可以配置为将删除任何文档的失败视为错误事件,这会将带有查询的流文件发送到失败关系。

所以你的 FlowFile 进入 DeleteMongo 需要看起来像(需要是你的 Mongo 的有效查询)

{ "id" : "100" }

将 QueryDatabaseTableRecord 与返回“id”字段的查询一起使用,例如SELECT id FROM table; 带有 JSONRecordSetWriter(推断架构应该没问题)。 DeleteMongo 读取 FlowFile 内容,因此您可以将 Max Rows Per Flow File 设置为 1,这样每个结果都会创建自己的 FlowFile(无需拆分)。

然后直接输入到 DeleteMongo。

删除Mongo 文档https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.12.1/org.apache.nifi.processors.mongodb.DeleteMongo/

QueryDatabaseTableRecord 文档 https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.12.1/org.apache.nifi.processors.standard.QueryDatabaseTableRecord/index.html

相关问题