Hvis du er ligeglad med tidszoneunderstøttelse i din applikation, så burde brug af strenge til grundlæggende forespørgsler i MongoDB fungere fint (men hvis det gør noget, vil du have en rigtig Date
type).
Men hvis du senere vil lave date-matematik eller bruge aggregeringsrammen med dit datofelt, er det nødvendigt, at feltet faktisk er en Date
type:
http://docs.mongodb.org/manual/reference/aggregation/ #date-operators
For eksempel kan du bruge $dayOfWeek
funktion på Date
indtastet felt.
Du kunne sandsynligvis gøre nogle simple ting som gruppe efter år ved at bruge $substr
(doc
) i MongoDB, men den resulterende kode vil ikke være så tydelig (og sandsynligvis heller ikke fungere så godt).
Selvom det ikke er den store forskel, vil jeg anbefale at gemme dem som Date
typer, hvis det er muligt generelt.
Jeg kan se i dokumenterne
for Perl-driveren, som udviklere advares mod at bruge DateTime
på grund af det faktum, at det er meget langsomt, så måske hvis du bruger Perl regelmæssigt, og aggregeringsrammen ikke er et stort problem, ville du være bedre at gemme dem som enten tal eller som strenge og konvertere dem efter behov i Perl.
Hvis plads er et problem, skal du fjerne unødvendige tegn (såsom -
). ):
20130613 ->
4 bytes for length of string
8 bytes encoded as UTF-8
NULL character
Det ville være 13 tegn. En DateTime-værdi i BSON
/MongoDB kræver på den anden side 8 bytes (ligesom Perl $time
ville funktion).
(Jeg vil på det kraftigste anbefale, at du laver en ydelsestest for at finde ud af, om virkningen af ydeevnen ved at bruge en Date
indtastning i MongoDB med Perl vil påvirke dine typiske arbejdsgange.)