MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Zeit, in Mongodb zu leben, Mungo arbeitet nicht. Dokumente werden nicht gelöscht

var UserSessionSchema   = new Schema({
    sessionActivity:    { type: Date, expires: '15s', default: Date.now }, // Expire after 15 s
    user_token:         { type: String, required: true }
});

Ein TTL-Index löscht ein Dokument 'x' Sekunden, nachdem sein Wert (der ein Datum oder ein Array von Daten sein sollte) übergeben wurde. Die TTL wird jede Minute überprüft, daher kann sie etwas länger als die von Ihnen angegebenen 15 Sekunden dauern.

Um dem Datum einen Standardwert zu geben, können Sie den default verwenden Option in Mongoose. Es übernimmt eine Funktion. In diesem Fall Date() gibt den aktuellen Zeitstempel zurück. Dadurch wird das Datum einmal auf die aktuelle Uhrzeit gesetzt .

Sie können auch diesen Weg gehen:

UserSessionSchema.pre("save", function(next) { 
    this.sessionActivity = new Date(); 
    next(); 
});

Dadurch wird der Wert jedes Mal aktualisiert Sie rufen .save() auf (aber nicht .update() ).