0
Gibt es eine Möglichkeit, expiresAt
Index nur für einige Dokumente, abhängig vom aktuellen Dokumentstatus festlegen?Mongoose bedingte TTL für Dokument
Gibt es eine Möglichkeit, expiresAt
Index nur für einige Dokumente, abhängig vom aktuellen Dokumentstatus festlegen?Mongoose bedingte TTL für Dokument
Ja, gibt es. Sie müssen die Indizes partialFilterExpression und expiresAt einstellen. Funktioniert nur bei mongodb 3.2+
-Code unten wird Dokument nach 24 h nur entfernen, wenn payed
Eigenschaft false
gleich:
let billingSchema = new mongoose.Schema({
_id:type:Number,
summ:{
type:Number,
required:true
},
description:String,
payed:{
type:Boolean,
default:false,
index:true
},
ownerId:{
type:mongoose.Schema.Types.ObjectId,
ref:'User',
index:true
}
},{timestamps: true,_id: false});
billingSchema.index({createdAt: 1},{expireAfterSeconds: 24*60*60,partialFilterExpression : {payed: false}});
Links zu der entsprechenden Dokumentation hinzufügen und zu erklären, wie es funktioniert Ihre Antwort erheblich verbessern würde. –