mongodb entfernen Sie alle Termine, die weniger als angegeben
Habe ich die folgenden Daten.
{
deviceID: 186,
date: "2014-3-15"
}
{
deviceID: 186,
date: "2014-3-14"
}
{
deviceID: 186,
date: "2014-3-13"
}
Und einige geringere Termine, wie 2014-3-9 , 8 ,7 ,6
etc.
Werden, wenn dabei eine db.coll.remove({date:{$lte:"2014-3-5"}})
Mongo entfernt die 15,14,13
gut, aber hält einstelligen Tag Termine. Ist das vielleicht wegen dem Datum ein string ist?
Ich weiß nicht, wie sonst, um das Datum zu formatieren, so kann ich entfernen Sie alle Termine unter einen bestimmten Datum.
Soll es sein, eine Reinigung, entfernen Sie alle Dokumente mit einem Datum niedriger als angegeben.
Sie nicht brauchen, um konvertieren Sie die Zeichenfolge in ein Datum, so stellen Sie sicher, dass der Tag und der Monat sind immer zwei-stellig, aufgefüllt mit einer null:
2014-03-09
. Dann Ihre Fragen richtig zu entfernen die natürlich sortiert Datum-strings.InformationsquelleAutor user3422790 | 2014-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sein, weil das Datum Feld, das Sie Abfragen ist ein string abgelegt und nicht Date(). In Ihrer mongo-Dokumente anstelle von einem benutzerdefinierten Datums-Zeichenfolge, einfügen von javascript-date-Objekte in das Feld Datum.
wie
und wenn Sie führen Sie das entfernen, machen Sie es wie
InformationsquelleAutor mithunsatheesh
Dies ist, weil Sie die Speicherung Ihrer Daten in einem falschen format. Sie haben eine string-ein string
'15'
ist kleiner als string'5'
. Konvertieren Sie Ihre Saiten in die Anfang-bis-Datum (gelesen hier wie verwenden von Datumsangaben in mongo).Und nur dann können Sie es verwenden, um richtig vergleichen zu können Ihre Termine:
InformationsquelleAutor Salvador Dali
Der Grund dafür ist, ist Ihre Daten sind strings.
So, in einem lexikalischen Sinn beim vergleichen von Zeichenfolgen "2014-3-5" ist größer als "2014-3-15", als was verglichen wird ist die "1" ist kleiner als "5".
Fixieren Sie Ihre Termine als echte ISO-Daten, oder werden Sie für immer haben dieses problem.
Batch-konvertieren, wie dies vorausgesetzt, "Jahr" "Monat" "Tag" - format:
Macht Sie sicher, dass Sie die richtigen Daten auf Wandlung.
InformationsquelleAutor Neil Lunn
Wenn Sie möchten, um das entfernen von Daten aus MongoDB ab dem Datum weniger als angegeben, MÜSSEN Sie sicherstellen, dass das Datum.
Einfachste Weg für Sie, um zu überprüfen, ob die Eingabe das richtige format ist, um es zu testen, bevor Sie es in Ihrer Anfrage.
Zum Beispiel, wenn Sie wollen bekommen Sie das aktuelle Datum im Isodatum in der Mongo-shell, geben Sie einfach
new Date
und Sie bekommen das aktuelle Datum im Mongo.Ich habe versucht, die folgenden in der Mongo-shell:
und es gibt
ist nicht das, was ich wollte.
Was ich will, ist, Daten zu löschen, die vor dem 1. November 2017.
Hier ist was für mich funktioniert:
und es gibt:
Ist es, was ich wollte.
InformationsquelleAutor Abdul Rahman A Samad