Bortset fra SERVER-6310 nævnt af Matt Johnson, er en anden løsning at bruge $project
operatør for at lægge til eller trække fra UTC-tidszonen for at "skifte tiden" til den korrekte lokale zone. Det viser sig, at du kan tilføje eller trække tid i millisekunder.
For eksempel, hvis jeg antager, at jeg har et datofelt kaldet orderTime
. Jeg vil gerne spørge efter EDT. Det er -4 timer fra UTC. Det er 4 * 60 * 60 * 1000 millisekunder.
Så jeg ville så skrive følgende projektion for at få day_ordered
i lokal tid for alle mine optegnelser:
db.table.aggregate(
{ $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
{ $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })