MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment gérer le problème du fuseau horaire lors du stockage des dates dans utc en utilisant mongod ?

Mis à part le SERVER-6310 mentionné par Matt Johnson, une autre solution consiste à utiliser le $project opérateur pour ajouter ou soustraire du fuseau horaire UTC pour "décaler l'heure" dans le fuseau local correct. Il s'avère que vous pouvez ajouter ou soustraire du temps en millisecondes.

Par exemple, en supposant que j'ai un champ Date appelé orderTime . J'aimerais interroger EDT. C'est-à-4 heures de l'UTC. C'est 4 * 60 * 60 * 1000 millisecondes.

J'écrirais donc la projection suivante pour obtenir day_ordered en heure locale pour tous mes enregistrements :

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