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

Aggregato Mongodb:converte la data in un altro fuso orario

Come aggiornamento, MongoDB 3.6 ha un nuovo parametro del fuso orario per la manipolazione della data nel framework di aggregazione. La maggior parte degli operatori relativi alla data accetta questo parametro facoltativo, vedi $hour per un esempio.

Ad esempio, se abbiamo un documento in cui la data è esattamente il nuovo anno in UTC:

> db.test.find()
{"_id": 1, "dt": ISODate("2018-01-01T00:00:00Z")}

Possiamo visualizzare la data nel fuso orario di New York:

> db.test.aggregate([
...     {$project:{
...         date:{$dayOfMonth:{date:'$dt',timezone:'America/New_York'}},
...         month:{$month:{date:'$dt',timezone:'America/New_York'}},
...         year:{$year:{date:'$dt',timezone:'America/New_York'}},
...         hour:{$hour:{date:'$dt',timezone:'America/New_York'}}
...     }}
... ])
{ "_id": 1, "date": 31, "month": 12, "year": 2017, "hour": 19 }

Possiamo anche visualizzare la data nel fuso orario di Sydney:

> db.test.aggregate([
...     {$project:{
...         date:{$dayOfMonth:{date:'$dt',timezone:'Australia/Sydney'}},
...         month:{$month:{date:'$dt',timezone:'Australia/Sydney'}},
...         year:{$year:{date:'$dt',timezone:'Australia/Sydney'}},
...         hour:{$hour:{date:'$dt',timezone:'Australia/Sydney'}}
...     }}
... ])
{ "_id": 1, "date": 1, "month": 1, "year": 2018, "hour": 11 }

La descrizione del fuso orario utilizza la stringa Olson Timezone Identifier standard.