MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come affrontare il problema del fuso orario durante la memorizzazione delle date in utc utilizzando mongod?

A parte il SERVER-6310 menzionato da Matt Johnson, un'altra soluzione alternativa consiste nell'usare il $project operatore per aggiungere o sottrarre dal fuso orario UTC per "spostare l'ora" nel fuso locale corretto. Risulta che puoi aggiungere o sottrarre il tempo in millisecondi.

Ad esempio, supponendo di avere un campo Data chiamato orderTime . Vorrei eseguire una query per EDT. Cioè -4 ore da UTC. Sono 4 * 60 * 60 * 1000 millisecondi.

Quindi scriverei la seguente proiezione per ottenere day_ordered nell'ora locale per tutti i miei record:

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