Освен SERVER-6310, споменат от Мат Джонсън, едно друго решение е да се използва $project
оператор за добавяне или изваждане от часовата зона UTC, за да "измести времето" в правилната локална зона. Оказва се, че можете да добавяте или изваждате време в милисекунди.
Например, ако приемем, че имам поле за дата, наречено orderTime
. Бих искал да попитам за EDT. Това е -4 часа от UTC. Това е 4 * 60 * 60 * 1000 милисекунди.
Така че след това ще напиша следната проекция, за да получа day_ordered
в местно време за всички мои записи:
db.table.aggregate(
{ $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
{ $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })