提问者:小点点

一段时间后删除MongoDB文档


我将用户令牌存储在用户字段中,我希望在一段时间后删除该令牌,该时间几乎相当于令牌的到期时间,这样令牌在一段时间后自动删除。 我正在使用架构作为:

const userSchema= new mongoose.Schema({
name:{
    type:String,
    default:"a",
    trim:true,
    lowercase:true
},
tokens:[{
    token:{
        type:String,
        expire_at: {
            type: Date, 
            default: Date.now,
            index: { expires: '1m' }
        }
    }
}]
},{
    timestamps:true
})

这种方法不起作用。 请建议一个方法来做这件事。


共1个答案

匿名用户

你需要的叫做“TTL索引”。 但是,如果您希望它是精确的,那么您将需要有您自己的机制来删除这些文档; 因为TTL不能保证这样的文档立即被删除。

db.users.createIndex( { "expire_at": 1 }, { expireAfterSeconds: 0 } )

expire_at等于now或更高时,它将删除文档。

以下是文档:

https://docs.mongodb.com/manual/tutorial/expire-data/#expire-documents-at-a-specific-clock-time