如何在mongoDB上自动删除5m后的该字段?Mongodb, mongoose,schema &g



这是我的schema,我想在5分钟后自动过期此字段。怎么做呢?

const userRegistrationSchema = new mongoose.Schema({
mobile: {
type: Number, trim: true,
},
email: {
type: String, lowercase: true, trim: true
},
// email Varification
verified: {
type: Boolean,
},
otp: {
type: Number,
},
password: {
type: String, trim: true,
},
confirmPassword: {
type: String, trim: true,
},

如果用户输入这个值并像这样存储

mobile: 9561300851
email: "xyz@gmail.com"
verified: false
otp: 8236

和5分钟后,我想我的数据看起来像与otp字段

mobile: 9561300851
email: "skcoder510@gmail.com"
verified: false

我希望我已经解释了我的问题,然后如何做。

MongoDB只支持使用TTL在一定时间后删除文档。但是,对于字段删除,您可以在使用OTP后使用$unset删除字段。

https://www.mongodb.com/docs/manual/reference/operator/update/unset/

或者,您可以创建调度程序,它将在特定时间后运行,并使用$unset删除所有已使用的OTP字段。

AFAIK MongoDB只支持文档TTL,不支持字段TTL: https://www.mongodb.com/docs/manual/core/index-ttl/

您可以考虑创建一个单独的OTP模式,其TTL索引为5分钟。相关的Mongoose文档可以在这里找到:https://mongoosejs.com/docs/api.html schemadateoptions_SchemaDateOptions-expires

最新更新