Ich versuche, ältere Datensätze in meiner Sammlung zu löschen.
Ich habe eine Sammlung namens "user_track", die aus Daten in folgendem Format besteht:
%Vor%In meiner Sammlung user_track möchte ich nur die Daten des aktuellen Monats behalten (also vom 01.09.2013 bis heute) und die restlichen Datensätze löschen, die nicht zum aktuellen Monat gehören
Ich habe versucht, den folgenden Befehl auszugeben, aber ich bin nicht sicher, wie ich diesen Befehl ausgeben soll, um meiner Anforderung zu entsprechen, da das Datum, das ich habe, in einem anderen Format ist.
%Vor%Bitte schlagen Sie vor.
Wahrscheinlich gibt es eine sauberere Lösung, aber das sollte funktionieren:
Erstellen Sie ein neues Datenfeld aus Datumszeichenfolgen:
%Vor%Jetzt können Sie einige Datensätze durch Vergleichen von Daten abrufen:
%Vor%Wenn alles wie erwartet funktioniert, entfernen Sie veraltete Datensätze:
%Vor%Verwenden Sie in der Zukunft Datumsobjekte nicht Zeichenfolgen
Ich habe eine Lösung gefunden, um dieses Problem anzugehen.
%Vor%Ich werde dies automatisch ausführen, indem ich diese Zeilen in eine Bash-Datei setze und dieses Skript mit einem Cron-Tab plane.
Bitte teilen Sie Ihre Ansichten, wenn dies eine gültige Lösung ist oder nicht?
Mongo hat eine TTL-Funktion für Sammlungen, ich denke, das ist eine schöne Lösung für solche Fälle:
Grundsätzlich so etwas wie:
db.log_events.createIndex ({"createdAt": 1}, {expireAfterSeconds: 3600})
Tags und Links mongodb