sql >> Base de Datos >  >> NoSQL >> MongoDB

Agregado de Mongodb:convertir la fecha a otra zona horaria

Como actualización, MongoDB 3.6 tiene un nuevo parámetro de zona horaria para la manipulación de fechas en el marco de agregación. La mayoría de los operadores relacionados con fechas aceptan este parámetro opcional; consulte $hora para ver un ejemplo.

Por ejemplo, si tenemos un documento donde la fecha es exactamente el año nuevo en UTC:

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

Podemos mostrar la fecha en la zona horaria de Nueva 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 }

También podemos mostrar la fecha en la zona horaria de 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 descripción de la zona horaria utiliza la cadena estándar del identificador de zona horaria de Olson.