Oprócz SERVER-6310 wspomnianego przez Matta Johnsona, innym obejściem jest użycie $project
operatora, aby dodać lub odjąć od strefy czasowej UTC, aby „przesunąć czas” do właściwej strefy lokalnej. Okazuje się, że możesz dodawać lub odejmować czas w milisekundach.
Na przykład zakładając, że mam pole Data o nazwie orderTime
. Chciałbym zapytać o EDT. To jest -4 godziny od UTC. To 4*60*60*1000 milisekund.
Więc napisałbym następującą projekcję, aby uzyskać day_ordered
w czasie lokalnym dla wszystkich moich rekordów:
db.table.aggregate(
{ $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
{ $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })