MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Différence MongoDB entre l'objet DateTime et la chaîne AAAA-MM-JJ

Si vous ne vous souciez pas de la prise en charge du fuseau horaire dans votre application, l'utilisation de chaînes pour les requêtes de base dans MongoDB devrait fonctionner correctement (mais si cela importe, vous voudrez une vraie Date type).

Cependant, si vous voulez plus tard faire des calculs de date ou utiliser le cadre d'agrégation avec votre champ de date, il est nécessaire que le champ soit en fait une Date saisissez :

http://docs.mongodb.org/manual/reference/aggregation/ #date-opérateurs

Par exemple, vous pouvez utiliser le $dayOfWeek fonction sur la Date champ saisi.

Vous pourriez probablement faire des choses simples comme le groupe sur l'année en utilisant $substr (doc ) dans MongoDB, mais le code résultant ne sera pas aussi clair (et ne fonctionnera probablement pas aussi bien).

Bien que ce ne soit pas une énorme différence, je vous recommande de les stocker en tant que Date types si possible généralement.

Je vois dans la docs pour le pilote Perl contre lequel les développeurs sont avertis d'utiliser le DateTime en raison du fait qu'il est très lent, donc peut-être que si vous utilisez Perl régulièrement, et que le cadre d'agrégation n'est pas un gros problème, vous feriez mieux de les stocker sous forme de nombres ou de chaînes, et de les convertir au besoin dans Perle.

Si l'espace est un problème, supprimez les caractères inutiles (tels que le - ):

20130613 -> 
    4 bytes for length of string 
    8 bytes encoded as UTF-8
    NULL character

Ce serait 13 caractères. Une valeur DateTime dans BSON /MongoDB nécessite 8 octets d'autre part (comme le ferait Perl $time fonction).

(Je vous recommande fortement de faire quelques tests de performances pour savoir si l'impact sur les performances de l'utilisation d'une Date taper dans MongoDB avec Perl aura un impact sur vos flux de travail typiques.)