Entferne alte Datensätze in Mongodb basierend auf Monat

8

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.

    
Pawan 10.09.2013, 10:26
quelle

5 Antworten

18

Sie können jedes Datum mit Javascript date

angeben %Vor%

Um Dokumente vor dem 1. September 2013 zu entfernen, sollte Ihr Befehl

lauten %Vor%

September ist der 9. Monat, aber das Monatsfeld ist null indiziert. Also machen wir das als 8.

    
bsd 10.09.2013, 12:18
quelle
4

Wahrscheinlich gibt es eine sauberere Lösung, aber das sollte funktionieren:

  1. Erstellen Sie ein neues Datenfeld aus Datumszeichenfolgen:

    %Vor%
  2. Jetzt können Sie einige Datensätze durch Vergleichen von Daten abrufen:

    %Vor%
  3. Wenn alles wie erwartet funktioniert, entfernen Sie veraltete Datensätze:

    %Vor%
  4. Verwenden Sie in der Zukunft Datumsobjekte nicht Zeichenfolgen

zero323 10.09.2013 11:01
quelle
2

Zusätzlich zu anderen Antworten können Sie in der Kollektion "Time to live" interessant sein: Ссылка

Es ist nützlich, Dokumente nach einem bestimmten Zeitraum automatisch aus einer Sammlung zu entfernen / zu entfernen.

    
Kamarey 10.09.2013 12:31
quelle
0

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?

    
Pawan 10.09.2013 12:38
quelle
0

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})

    
JAR.JAR.beans 26.11.2017 15:58
quelle

Tags und Links