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

¿Cómo lidiar con el problema de la zona horaria al almacenar fechas en utc usando mongod?

Aparte del SERVER-6310 mencionado por Matt Johnson, otra solución es usar el $project operador sume o reste de la zona horaria UTC para "cambiar la hora" a la zona local correcta. Resulta que puedes sumar o restar tiempo en milisegundos.

Por ejemplo, suponiendo que tengo un campo de Fecha llamado orderTime . Me gustaría consultar por EDT. Eso es -4 horas desde UTC. Eso es 4 * 60 * 60 * 1000 milisegundos.

Entonces escribiría la siguiente proyección para obtener day_ordered en hora local para todos mis registros:

db.table.aggregate( 
    { $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
    { $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })