Kromě SERVER-6310 zmíněného Mattem Johnsonem je dalším řešením použití $project
operátor přidat nebo odečíst od časového pásma UTC a "posunout čas" do správné místní zóny. Ukázalo se, že můžete přidat nebo odečíst čas v milisekundách.
Za předpokladu, že mám například pole Datum nazvané orderTime
. Chtěl bych se zeptat na EDT. To je -4 hodiny od UTC. To je 4 * 60 * 60 * 1000 milisekund.
Takže bych pak napsal následující projekci, abych dostal day_ordered
v místním čase pro všechny mé záznamy:
db.table.aggregate(
{ $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
{ $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })