Wie query date range " auf der MongoDB collection, wo die ISO-Datum ist gespeichert im string-Feld?
Szenario: Betrachten Sie ich habe eine Sammlung der sogenannten MyCollection
mit folgenden Daten:
{
"_id" : 'MyUniqueID_01'
"CreatedTime" : "2013-12-01T14:35:00Z",
"LastModifiedTime" : "2013-12-01T13:25:00Z"
}
Nun möchte ich die Abfrage der MongoDB-Datenbank, wo die oben genannten Arten von Daten ist in großen Anzahl von Dokumenten. Und meine Abfrage basiert auf Datumsbereich, D. H. die Verwendung $gt
, $gte
, $lt
& $lte
Also meine Abfrage so etwas wie:
db.MyCollection.find({ 'CreatedTime': {$gt: '2013-05-25T09:29:40.572Z'}})
In Anbetracht der oben genannten Beispiele das erwartete Ergebnis ist, die Abfrage hat ein Papier zu bekommen (da die "CreatedTime" : "2013-12-01T14:35:00Z" ist größer als der übergebene Wert in der Abfrage "2013-05-25T09:29:40.572 Z'); in der Erwägung, dass es nicht das Problem ist, dass das Feld CreatedTime
ist im string-format.
Frage: gibt es eine Möglichkeit, damit kann ich endlich mein erwartetes Ergebnis perfekt ohne Veränderung des string-Feld Typ auf Datum?
- ISO 8601 Datum-Zeit-strings wie diese sollte gut funktionieren, für den Datumsbereich Abfragen. Das ist einer der Vorteile des formats. Dein Beispiel Abfrage zurückgegeben wird dein Beispiel doc, wie erwartet.
- Danke... Genau Es funktioniert in meiner lokalen DB, aber die gleiche Abfrage fehl tun, die erwartet, dass auf dem live-server.. gibt es eine version Abhängigkeiten?
- Aus Neugier, hast du herausgefunden, warum es nicht funktioniert auf dem server? Ich arbeite Abfragen zwischen Zeit reicht und stieß auf dieses, während der Suche.
- Nope.. 🙁 ich habe es nicht bekommen, den Grund dafür, warum es nicht auf server. Für Ihre information server wurde CentOS & MongoDB Version 2.0.9
- Ich habe mono version +2.6 und stieß in das gleiche Problem, als ich versuchte, meinen Datumsbereiche als " Isodatum("2014-08-17T20:59:59.000 Z -")` es funktionierte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Abfragen genau so wie im Beispiel.
Den string der Bestellung vereinbar ist, und geben Sie die genaue Beziehung, die Sie wollen.