Ich habe gerade angefangen, Mongodb zu verwenden. Stecken geblieben.automatische Löschung von Dokumenten in mongodb
So habe ich eine Sammlung mit Feldern:
_id
startdate (long)
endDate (long)
Name
Jetzt möchte ich auf die Dokumente automatisch löschen, die älter als ein bestimmtes Datum.
Ich erstellte einen TTL-Index für startDate
Feld, legen Sie die Ablaufzeit nach 2 Minuten und getestet, ob es abläuft. Beim Einfügen eines Dokuments mit startDate
als isoDate
hat es funktioniert und ist abgelaufen.
..insert({startDate:newDate()})--> Got deleted after 2 secs.
Meine Frage ist, was auch immer Daten zuvor installiert wurden haben StartDate als lange Wert. Wie wird das funktionieren?
Danke Paul! Scheint, dass ich Dokumente löschen muss, die auf ihrem Erstellungsdatum basieren, nicht dem Startdatum Wert. Ich habe creationDate auch nicht als separates Feld. Ich verstehe, dass ich Timestamp von ObjectId bekommen kann, wenn ich das Datum des Dokumentes erhalten möchte. Aber die Dokumentation erwähnt, dass wir keine TTL-Indizes für _id erstellen können. Habe ich recht? Irgendein Vorschlag? – Rthp
Wenn Sie kein solches Feld haben, fügen Sie es hinzu! Aktualisieren Sie Ihre Dokumente, um ein create_date-Feld mit dem Zeitstempel aus der ObjectId hinzuzufügen (ich habe diese Funktion noch nie benutzt, aber es macht Sinn), dann TTL-Index auf create_date. – PaulMcG