sql >> Databáze >  >> NoSQL >> MongoDB

Rozdíl MongoDB mezi objektem DateTime a řetězcem YYYY-MM-DD

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



  1. vlastní řazení mongoose/mongodb

  2. Získejte upozornění na změněné dokumenty v mongodb

  3. mongodb count vs find with count

  4. Jak povolit SSL/TLS v klientovi Mongoid 3?