mongodbwriter中presql执行时间类型匹配条件移除数据不成功

问题描述

数据集成>离线数据同步>附录>配置Writer插件>MongoDB Writer

配置的preSql中匹配条件用时间类型无法移除目标库对应集合的匹配数据

字符格式$eq匹配可以移除

期望结果

删除目标库中对应集合里匹配preSql条件的数据。

已尝试的方法

json方式

1.json解析不通过

"preSql": {

"type":"remove",

"json":"{'stat_month':{'$eq':ISODate('2022-12-01T00:00:00.000+08:00')}}"

}

2.执行未删除匹配项

"preSql": {

"type":"remove",

"json":"{'stat_month':{'$eq':\"ISODate('2022-12-01T00:00:00.000+08:00')\"}}"

}

3.执行未删除匹配项

"preSql": {

"type":"remove",

"json":"{'stat_month':{'$gte':\"ISODate('2022-12-01T00:00:00.000+08:00')\"}}"

}

3.执行未删除匹配项

"preSql": {

"type":"remove",

"json":"{'stat_month':{'$eq':\"ISODate('2022-12-01T00:00:00.000+08:00')\"}}"

}

item方式

1.执行未删除匹配项

"preSql": {

"type":"remove",

"item":[{"name":"stat_month","value":"ISODate('2022-12-01T00:00:00.000+08:00')","condition":"$gte"}]

}

2.执行未删除匹配项

"preSql": {

"type":"remove",

"item":[{"name":"stat_month","value":"ISODate('2022-12-01T00:00:00+08:00')","condition":"$gte"}]

}

3.执行未删除匹配项

"preSql": {

"type":"remove",

"item":[{"name":"stat_month","value":"ISODate('2022-12-01T00:00:00+08:00')","condition":"$eq"}]

}

4.执行未删除匹配项

"preSql": {

"type":"remove",

"item":[{"name":"stat_month","value":"new Date('2022-12-01 00:00:00')","condition":"$gte"}]

}

5.执行未删除匹配项

"preSql": {

"type":"remove",

"item":[{"name":"stat_month","value":"new Date('2022-12-01 00:00:00')","condition":"$eq"}]

}

展开
收起
v.v. 2022-12-13 11:34:20 135 分享 版权
1 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    在MongoDB中,可以使用以下方式来删除匹配preSql条件的文档:

    1. 使用$match操作符来匹配与某个特定时间戳相关的文档。例如,如果要删除所有创建时间为2022年3月15日之前的文档,则可以使用以下查询语句:
    Copy Codedb.collection_name.remove({ "created_at": { "$lt": ISODate("2022-03-15") } })
    

    这将删除“collection_name”集合中的所有文档,其中“created_at”字段早于指定日期。

    1. 如果您使用的是MongoDB 4.2或更高版本,还可以使用聚合管道来删除匹配条件的文档。例如,以下聚合管道将删除所有创建时间为2022年3月15日之前的文档:
    Copy Codedb.collection_name.aggregate([
      {
        $match: {
          created_at: { $lt: ISODate("2022-03-15") }
        }
      },
      {
        $replaceWith: {}
      }
    ])
    

    这个聚合管道首先使用����ℎ操作符找到与特定日期匹配的文档。接下来,使用match操作符找到与特定日期匹配的文档。接下来,使用replaceWith操作符替换每个匹配的文档为空文档,从而删除它们。

    无论您选择哪种方法,请务必备份数据并小心操作以防止意外数据丢失。

    2023-03-15 00:07:07
    赞同 展开评论

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

还有其他疑问?
咨询AI助理