sql >> Base de Datos >  >> NoSQL >> MongoDB

Diferencia de MongoDB entre el objeto DateTime y la cadena YYYY-MM-DD

Si no le importa la compatibilidad con la zona horaria en su aplicación, el uso de cadenas para consultas básicas en MongoDB debería funcionar bien (pero si importa, querrá una Date real tipo).

Sin embargo, si más adelante quiere hacer cálculos de fechas o usar el marco de agregación con su campo de fecha, es necesario que el campo sea realmente una Date tipo:

http://docs.mongodb.org/manual/reference/aggregation/ #operadores-de-fecha

Por ejemplo, podría usar el $dayOfWeek función en la Date campo escrito.

Probablemente podría hacer algunas cosas simples como agrupar el año usando $substr (doc ) en MongoDB, pero el código resultante no será tan claro (ni probablemente funcionará tan bien).

Si bien no es una gran diferencia, recomendaría almacenarlos como Date tipos si es posible en general.

Veo en los docs para el controlador de Perl que se advierte a los desarrolladores sobre el uso de DateTime debido al hecho de que es muy lento, por lo que tal vez si usa Perl con regularidad, y Aggregation Framework no es un gran problema, sería mejor almacenarlos como números o como cadenas, y convertirlos según sea necesario en perla

Si el espacio es un problema, elimine los caracteres innecesarios (como el - ):

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

Serían 13 caracteres. Un valor DateTime en BSON /MongoDB requiere 8 bytes por otro lado (al igual que Perl $time función).

(Recomiendo encarecidamente que haga un poco de prueba de rendimiento para averiguar si el impacto en el rendimiento de usar una Date escriba en MongoDB con Perl afectará sus flujos de trabajo típicos).