Pokud se nestaráte o podporu časových pásem ve vaší aplikaci, pak by použití řetězců pro základní dotazy v MongoDB mělo fungovat dobře (ale pokud na tom záleží, budete chtít skutečné Date
typ).
Pokud však později budete chtít počítat datum nebo použít agregační rámec s polem data, je nutné, aby pole bylo ve skutečnosti Date
typ:
http://docs.mongodb.org/manual/reference/aggregation/ #date-operators
Můžete například použít $dayOfWeek
funkce na Date
zadané pole.
Pomocí $substr
byste pravděpodobně mohli dělat jednoduché věci, jako je seskupování po roce (doc
) v MongoDB, ale výsledný kód nebude tak jasný (ani pravděpodobně nebude fungovat stejně dobře).
I když to není velký rozdíl, doporučil bych je uložit jako Date
typy, pokud je to možné obecně.
Vidím v dokumentech
pro ovladač Perl, před kterým jsou vývojáři varováni pomocí DateTime
vzhledem k tomu, že je velmi pomalý, takže pokud používáte Perl pravidelně a agregační rámec nepředstavuje velký problém, bylo by lepší je uložit jako čísla nebo jako řetězce a podle potřeby je převést do Perl.
Pokud je problém s mezerou, odstraňte nepotřebné znaky (například -
):
20130613 ->
4 bytes for length of string
8 bytes encoded as UTF-8
NULL character
To by bylo 13 znaků. Hodnota DateTime v BSON
/MongoDB vyžaduje 8 bajtů na druhé straně (stejně jako Perl $time
funkce).
(Důrazně doporučuji provést trochu testování výkonu, abyste zjistili, zda má použití Date
dopad na výkon zadejte MongoDB pomocí Perlu ovlivní vaše typické pracovní postupy.)