Om du inte bryr dig om tidszonsstöd i din applikation bör det fungera bra att använda strängar för grundläggande frågor i MongoDB (men om det spelar någon roll, vill du ha ett riktigt Date
typ).
Men om du senare vill göra datummatematik eller använda aggregeringsramverket med ditt datumfält, är det nödvändigt att fältet faktiskt är ett Date
typ:
http://docs.mongodb.org/manual/reference/aggregation/ #date-operators
Du kan till exempel använda $dayOfWeek
funktion på Date
maskinskrivet fält.
Du kan förmodligen göra några enkla saker som grupp efter år genom att använda $substr
(doc
) i MongoDB, men den resulterande koden kommer inte att vara lika tydlig (inte heller fungera lika bra).
Även om det inte är någon stor skillnad, rekommenderar jag att du lagrar dem som Date
typer om möjligt generellt.
Jag ser i dokumenten
för Perl-drivrutinen som utvecklare varnas för att använda DateTime
på grund av att det är väldigt långsamt, så kanske om du använder Perl regelbundet och aggregeringsramverket inte är ett stort problem, skulle du kanske vara bättre att lagra dem som antingen nummer eller som strängar och konvertera dem efter behov i Perl.
Om utrymme är ett problem, ta bort onödiga tecken (som -
). ):
20130613 ->
4 bytes for length of string
8 bytes encoded as UTF-8
NULL character
Det skulle vara 13 tecken. Ett DateTime-värde i BSON
/MongoDB kräver å andra sidan 8 byte (liksom Perl $time
funktion).
(Jag rekommenderar starkt att du gör lite prestandatester för att ta reda på om prestandaeffekten av att använda ett Date
skriv in MongoDB med Perl kommer att påverka dina typiska arbetsflöden.)