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