MongoDB TTL / ExpireAfterSeconds行为异常,并且在给定时间后未删除所有数据

时间:2019-11-27 09:41:42

标签: mongodb mongodb-indexes

1)我们在类型为date的列上放置了expireAfterSeconds = 15

[
    {
        "v" : 1,
        "key" : {
            "_ts" : -1
        },
        "name" : "AnjaliIndex",
        "ns" : "test.sessions",
        "expireAfterSeconds" : 15
    }
]

它在昨天的日期上运行良好,但在今天的日期上运行不正常,即,当我将文档日期从当前日期更改为昨天的日期(它应删除所有数据)时,它正在删除数据。 (我给出的当前日期甚至不是将来的时间,而是以前的时间)

为什么会这样? mongodb引擎收集文档是否有任何特定的周期或时间?

(我看到了相关的问题,但在该问题中,他给出未来日期的用例有所不同)

Mongo DB版本:3.2.22

示例文档:(未删除)

{
    "_id" : ObjectId("5dde452818c87122389bbc09"),
    "authorization" : "a0ce0b43-194d-4402-99cb-b660b3365757",
    "userNumber" : "gourav@gmail.com",
    "_ts" : ISODate("2019-11-27T13:43:04.776Z")
}

1 个答案:

答案 0 :(得分:0)

我将尝试回答,看看是否可以帮助您。

db.my_collection.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )

此后,您在此集合中插入的每个文档都必须具有带有当前日期的“ createdAt”:

db.myCollection.insert( {
   "createdAt": new Date(), // This can be set in UTC
   "dataExample": 2,
   "Message": "#### My data ####"
} )