如何使用 NIFI 将日期插入 mongoDB

How to insert Date into mongoDB using NIFI

我正在尝试使用 NIFI 1.4 将数据从 csv 文件添加到 mongoDB。 CSV 文件包含如下数据:

101,ISODate(2006-01-02T15:04:05.000Z)

我正在使用 PutMongoRecord 处理器和 CSVReader 1.4.0 控制器服务。 我将我的架构定义为:

{"name" :"agent","type":"string"},
{"name" :"transactiondate","type":"string"}

所以结果我得到 output as "ISODate(2006-01-02T15:04:05.000Z)" in mongoDB as datatype as String 但它应该是 日期 。所以为此我需要 output as ISODate("2006-01-02T15:04:05.000Z") 。 如果有任何办法,请帮忙。

TIA

我认为您需要将日期从字符串转换为 Avro 逻辑类型。根据this、"For PutMongoRecord all you have to do is use a long annotated as a timestamp or an int annotated as a date and make sure record reader has the format options done configured correctly for timestamp and date."

@mattyb 回答很完美。只是在这里添加更多细节,因为我 运行 遇到了同样的情况并且能够解决它。

1.Here 是一个关于如何在 AVRO 架构中处理日期和时间戳的示例。

{
  "type": "record",
  "namespace": "com.example",
  "name": "TestRecord",
  "fields": [
    { "name": "FLOAT_TO_INT", "type": "float" },
    { "name": "TIMESTAMP"   , "type": { "type":"long", "logicalType":"timestamp-millis"} },
    { "name": "TEXT"        , "type": "string" },
    { "name": "DATE"        , "type": { "type":"int", "logicalType":"date"} }
  ]
} 

2.In 你的 CSV reader 配置,使用上面的 AVRO 模式,在日期格式中,指定 yyyy-MM-dd