Heim > Artikel > Backend-Entwicklung > Warum laufen meine MongoDB-Dokumente mit TTL-Indizes in Go nicht nach 5 Sekunden ab?
Mit MongoDB lassen Dokumente nach einer bestimmten Anzahl von Sekunden in Go ablaufen
Mithilfe von TTL-Indizes können Sie mit MongoDB Dokumente nach einer bestimmten Anzahl von Sekunden automatisch ablaufen lassen Dauer. Dieser Artikel zeigt, wie Sie dies in Go mit dem offiziellen Mongo-Go-Treiber erreichen.
Im Anschluss an die MongoDB-Dokumentation zeigt der Code, wie Sie:
Das bereitgestellte Beispiel funktioniert jedoch ordnungsgemäß und das Problem hängt nicht mit dem Code zusammen.
Grundlegendes zum TTL-Indexverhalten
Der Parameter „expireAfterSeconds“ gibt die Dauer nach dem Feld „createdAt“ an, nach der das Dokument als abgelaufen betrachtet werden soll. Die Löschung abgelaufener Dokumente erfolgt jedoch nicht sofort.
Laut MongoDB-Dokumentation:
„Der TTL-Index garantiert nicht, dass abgelaufene Daten sofort nach Ablauf gelöscht werden. Es kann zu einer Verzögerung kommen.“ zwischen dem Zeitpunkt, zu dem ein Dokument abläuft, und dem Zeitpunkt, zu dem MongoDB das Dokument aus der Datenbank entfernt.“
Hintergrundaufgabe zum Löschen
MongoDB verfügt über eine Hintergrundaufgabe, die abgelaufene Dokumente entfernt alle 60 Sekunden. Daher können Dokumente nach Ablauf bis zu 60 Sekunden in der Sammlung verbleiben. Wenn die Datenbank außerdem stark ausgelastet ist, kann es zusätzliche Zeit dauern, bis alle abgelaufenen Dokumente gelöscht sind.
Lösung
In Ihrem Code-Snippet erwarten Sie einige Dokumente werden nach 5 Sekunden gelöscht (basierend auf der Option „expireAfterSeconds“), warten jedoch nur Sekunden nach dem Einfügen auf die Überprüfung. Um die Funktionalität korrekt zu testen, sollten Sie ausreichend Zeit (mindestens mehrere Minuten) einplanen, damit die Hintergrundaufgabe ausgeführt und die abgelaufenen Dokumente gelöscht werden kann.
Das obige ist der detaillierte Inhalt vonWarum laufen meine MongoDB-Dokumente mit TTL-Indizes in Go nicht nach 5 Sekunden ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!