Удалить документ MongoDB через некоторое время - PullRequest
0 голосов
/ 12 июля 2020

Я храню токены пользователей в поле пользователя, и я хочу удалить этот токен через некоторое время, почти эквивалентное сроку действия токена, чтобы токен автоматически удалялся через некоторое время. Я использую схему как:

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 Ответ

0 голосов
/ 12 июля 2020

То, что вам нужно, называется «Индекс TTL». Но если вы хотите, чтобы он был точным, вам понадобится собственный механизм для удаления этого документа; потому что TTL не может гарантировать, что такие документы будут удалены в этот момент.

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

Что удалит документы, когда expire_at равно now или больше.

Вот документация:

https://docs.mongodb.com/manual/tutorial/expire-data/#expire -документы-по-определению c -часы

...