gpt4 book ai didi

mongodb TTL不删除文档

转载 作者:IT老高 更新时间:2023-10-28 13:34:43 39 4
gpt4 key购买 nike

我有一个简单的架构,例如:

{
_id: String, // auto generated
key: String, // there is a unique index on this field
timestamp: Date() // set to current time
}

然后我像这样设置 TTL 索引:

db.sess.ensureIndex( { "timestamp": 1 }, { expireAfterSeconds: 3600 } )

我希望记录会在 1 小时后被删除,但它永远不会被删除。我打开了详细日志记录,我看到 TTLMonitor 正在运行:

Tue Sep 10 10:42:37.081 [TTLMonitor] TTL: { timestamp: 1.0 } { timestamp: { $lt: new Date(1378823557081) } }
Tue Sep 10 10:42:37.081 [TTLMonitor] TTL deleted: 0

当我自己运行该查询时,我看到所有过期的记录都回来了:

db.sess.find({ timestamp: { $lt: new Date(1378823557081) }})

...

有什么想法吗?我被难住了。

编辑 - 下面的示例文档

{ "_id" : "3971446b45e640fdb30ebb3d58663807", "key" : "6XTHYKG7XBTQE9MJH8", "timestamp" : ISODate("2013-09-09T18:54:28Z") }

最佳答案

  1. 你能告诉我们插入的记录实际上是什么样的吗?

  2. “从不”有多长?因为有一个很大的警告:

    Warning: The TTL index does not guarantee that expired data will be deleted immediately. There may be a delay between the time a document expires and the time that MongoDB removes the document from the database.

  3. 时间戳字段是否已有索引?

关于mongodb TTL不删除文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727743/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com