2017-10-25 7 views
0

Ich habe eine Sammlung von Dokumenten in MongoDB, die alle ein "Datum" -Feld haben, das ist eine ISO8601-formatierte Datumszeichenfolge (dh erstellt durch das moment.js-Format()) Methode).ISO8601 Datumszeichenfolgen in MongoDB (Indizierung und Abfrage)

Ich würde gerne in der Lage sein, effizient Abfragen für diese Sammlung, die das Gefühl "Dokumente, die ein Datum haben, das nach A und vor B ist" (d. H. Dokumente innerhalb einer Reihe von Daten).

Sollte ich meine Daten als etwas anderes als ISO-8601-Strings speichern? Abhängig von dieser Antwort, wie würde die MongoDB-Abfrageoperation für meine oben genannte Anforderung aussehen? Ich Vorstellungsvermögen so etwas wie:

{$and: [ 
    {date: {$gt: "2017-05-02T03:15:22-04:00"}}, 
    {date: {$lt: "2017-06-02T03:15:22-04:00"}}, 
]} 

Heißt das „einfach funktionieren“? Ich brauche etwas Überzeugungsarbeit.

Antwort

1

Sie wollen auf jeden Fall mit einem Index auf Ihrem date Feld und nicht Strings die eingebaute in date Datentyp verwenden. Der String-Vergleich wird im Vergleich zum Vergleich von Daten, die nur aus 64-Bit-Integern bestehen, langsam sein.

Soweit anfragende angeht, überprüfen Sie die Antwort hier aus:

return query based on date

Verwandte Themen