Matt Johnsonが言及したSERVER-6310の他に、もう1つの回避策は$project
を使用することです。 UTCタイムゾーンに加算または減算して、正しいローカルゾーンに「時刻をシフト」する演算子。ミリ秒単位で時間を加算または減算できることがわかりました。
たとえば、orderTime
という日付フィールドがあるとします。 。 EDTを照会したいのですが。これはUTCから-4時間です。これは4*60 * 60*1000ミリ秒です。
したがって、次のプロジェクションを記述して、day_ordered
を取得します。 すべての記録について現地時間で:
db.table.aggregate(
{ $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
{ $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })