MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Unterschied zwischen DateTime-Objekt und YYYY-MM-DD-String

Wenn Ihnen die Zeitzonenunterstützung in Ihrer Anwendung egal ist, sollte die Verwendung von Zeichenfolgen für grundlegende Abfragen in MongoDB gut funktionieren (aber wenn es darauf ankommt, möchten Sie ein echtes Date Typ).

Wenn Sie jedoch später Datumsberechnungen durchführen oder das Aggregation Framework mit Ihrem Datumsfeld verwenden möchten, ist es erforderlich, dass das Feld tatsächlich ein Date ist Typ:

http://docs.mongodb.org/manual/reference/aggregation/ #Datumsoperatoren

Sie könnten zum Beispiel $dayOfWeek verwenden Funktion auf dem Date eingegebenes Feld.

Mit $substr könnten Sie wahrscheinlich einige einfache Dinge tun, z. B. nach Jahr gruppieren (doc ) in MongoDB, aber der resultierende Code wird nicht so klar sein (und wahrscheinlich auch nicht so gut funktionieren).

Obwohl es kein großer Unterschied ist, würde ich empfehlen, sie als Date zu speichern Typen möglichst allgemein.

Ich sehe in den docs für den Perl-Treiber, vor dem Entwickler gewarnt werden, DateTime zu verwenden aufgrund der Tatsache, dass es sehr langsam ist. Wenn Sie also Perl regelmäßig verwenden und das Aggregation Framework kein großes Problem darstellt, sollten Sie sie besser entweder als Zahlen oder als Zeichenfolgen speichern und sie nach Bedarf in konvertieren Perl.

Wenn Platz ein Problem darstellt, entfernen Sie unnötige Zeichen (wie z. B. - ):

20130613 -> 
    4 bytes for length of string 
    8 bytes encoded as UTF-8
    NULL character

Das wären 13 Zeichen. Ein DateTime-Wert in BSON /MongoDB benötigt dagegen 8 Bytes (ebenso wie die Perl $time Funktion).

(Ich würde Ihnen dringend empfehlen, ein paar Leistungstests durchzuführen, um herauszufinden, ob die Auswirkungen auf die Leistung durch die Verwendung eines Date Typ in MongoDB mit Perl wirkt sich auf Ihre typischen Arbeitsabläufe aus.)