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

Mongodb aggregat:konverter dato til en anden tidszone

Som en opdatering har MongoDB 3.6 en ny tidszoneparameter til datomanipulation i aggregeringsrammerne. De fleste dato-relaterede operatører accepterer denne valgfri parameter, se $hour for et eksempel.

For eksempel, hvis vi har et dokument, hvor datoen er præcis det nye år i UTC:

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

Vi kan vise datoen i New Yorks tidszone:

> 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 }

Vi kan også vise datoen i Sydneys tidszone:

> 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 }

Tidszonebeskrivelsen bruger standard Olson Timezone Identifier-strengen.



  1. Konfiguration af advarsler på MongoDB-metrics

  2. Hvordan konfigurerer man en MongoDB-klynge, der understøtter sessioner?

  3. Enums i MongoDB

  4. Optimeret måde at forespørge på i MongoDB ved hjælp af $in vs $or