suchen

Heim  >  Fragen und Antworten  >  Hauptteil

node.js – Mongo-TTL-Daten werden nicht gelöscht, wenn sie ablaufen

Mit Mungo können Sie einem Dokument erfolgreich eine Ablaufzeit hinzufügen:

Allerdings werden die Daten nach der eingestellten Ablaufzeit immer noch nicht gelöscht. Das offizielle Dokument besagt, dass der Mongo-Hintergrunddienst jede Minute die Ablaufzeit abfragt, es handelt sich jedoch nicht mehr um eine Verzögerung von mehreren Minuten Wirkung

伊谢尔伦伊谢尔伦2748 Tage vor1059

Antworte allen(3)Ich werde antworten

  • 漂亮男人

    漂亮男人2017-05-17 09:58:31

    这个问题我自己解决了,重新看了下官方文档 https://docs.mongodb.com/manu...

    schema定义的索引必须与实际的数据相对应。

                 let myschema = new mongoose.Schema(
                    {
                        phone: {
                            type: String,
                            required: true
                        },
                        code: {
                            type: String,
                            required: true
                        },
                        createAt: {
                            type: Date,
                            default: Date.now(),
                            index: { expires: 60*1 } //设置验证码的有效时间为 10 分钟
                        }
                    }, {collection: 'sms'}
                );
                let MyModel = db.model('MyModel', myschema);
                let arr = {
                    phone: req.body.phone,
                    code: code,
                    createAt: Date.now()
                }  

    schema 中的 createAt 必须与 arr 中的 createAt 对应,且必须给定时间,这样才会生效。

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-17 09:58:31

    let mySchema = new mongoose.Schema(...)试试?

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-05-17 09:58:31

    几点建议:

    1、先检查一下索引的实际TTL情况;您贴出来的部分,感觉上面代码和下面的截图不一致

    2、看看server.Status中的ttl的部分

    db.serverStatus().metrics.ttl

    供参考。

    Love MongoDB!Have fun!

    Antwort
    0
  • StornierenAntwort