Förutom SERVER-6310 som nämns av Matt Johnson, är en annan lösning att använda $project
operatör för att lägga till eller subtrahera från UTC-tidszonen för att "skifta tiden" till rätt lokala zon. Det visar sig att du kan lägga till eller subtrahera tid i millisekunder.
Om jag till exempel har ett datumfält som heter orderTime
. Jag skulle vilja fråga efter EDT. Det är -4 timmar från UTC. Det är 4 * 60 * 60 * 1000 millisekunder.
Så jag skulle då skriva följande projektion för att få day_ordered
i lokal tid för alla mina poster:
db.table.aggregate(
{ $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
{ $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })