MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie gehe ich mit dem Zeitzonenproblem um, wenn Daten mit Mongod in UTC gespeichert werden?

Neben dem von Matt Johnson erwähnten SERVER-6310 besteht eine weitere Problemumgehung darin, das $project zu verwenden Operator zum Addieren oder Subtrahieren von der UTC-Zeitzone, um die Zeit in die richtige lokale Zone zu "verschieben". Es stellt sich heraus, dass Sie die Zeit in Millisekunden addieren oder subtrahieren können.

Angenommen, ich habe ein Datumsfeld namens orderTime . Ich möchte nach EDT fragen. Das sind -4 Stunden von UTC. Das sind 4 * 60 * 60 * 1000 Millisekunden.

Also würde ich dann die folgende Projektion schreiben, um day_ordered zu erhalten in Ortszeit für alle meine Aufzeichnungen:

db.table.aggregate( 
    { $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
    { $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })