MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como lidar com o problema do fuso horário ao armazenar datas no utc usando o mongod?


Além do SERVER-6310 mencionado por Matt Johnson, uma outra solução é usar o $project operador para adicionar ou subtrair do fuso horário UTC para "mudar a hora" para a zona local correta. Acontece que você pode adicionar ou subtrair o tempo em milissegundos.

Por exemplo, supondo que eu tenha um campo Data chamado orderTime . Eu gostaria de consultar o EDT. Isso é -4 horas do UTC. Isso é 4 * 60 * 60 * 1000 milissegundos.

Então, eu escreveria a seguinte projeção para obter day_ordered na hora local para todos os meus registros:
db.table.aggregate( 
    { $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
    { $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })