【问题标题】:Setting TTL doesn't remove the records in MongoDB设置 TTL 不会删除 MongoDB 中的记录
【发布时间】:2017-01-23 16:59:26
【问题描述】:

我使用 Robo Mongo 运行我的 Mongo DB 查询。我有一个包含“requestReceivedTimestamp”列的集合,其中包含日期时间(例如:12/13/2016 23:18:56 EST)。我已使用以下命令在此列上设置 TTL 到期索引。出于某种原因,我没有看到记录被删除。我在这里做错了吗?

db.logging.createIndex( { "requestReceivedTimestamp": 1 }, { expireAfterSeconds: 2592000 } ) --> 运行此命令在'requestReceivedTimestamp' 上创建 TTL 索引

启用 MongoDB TTL 监控:db.adminCommand({setParameter:1, ttlMonitorEnabled:true}); --> 此命令确保 ttlMonitor 为 ON。我不知道怎么看,是ON还是OFF,所以我运行了这个命令来打开它。

这就是使用 mongo DB 时数据的样子。

How the collection looks like in RoboMongo

【问题讨论】:

    标签: mongodb robo3t


    【解决方案1】:

    requestReceivedTimestamp 的值应该是 ISO 日期(可能是时间戳):https://docs.mongodb.com/manual/tutorial/expire-data/

    创建 ISO 日期:

    new Date()
    new Date('July 22, 2013 14:00:00')
    

    【讨论】:

      【解决方案2】:

      感谢保罗·雷。使用 new Date() 插入列数据后,我能够在使用 ttl 到期日期索引新列后删除行。使用相同的命令 - db.logging.createIndex( { "recordCreateDate": 1 }, { expireAfterSeconds: 2592000 } )

      Image of the inserted record

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-14
        • 2016-04-20
        • 2019-09-23
        • 2016-11-02
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        相关资源
        最近更新 更多