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" } } })