sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb aggregat:konvertera datum till en annan tidszon

Som en uppdatering har MongoDB 3.6 en ny tidszonsparameter för datummanipulation i aggregeringsramverket. De flesta datumrelaterade operatorer accepterar denna valfria parameter, se $hour för ett exempel.

Till exempel, om vi har ett dokument där datumet är exakt det nya året i UTC:

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

Vi kan visa datumet i New Yorks tidszon:

> 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 också visa datumet i Sydneys tidszon:

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

Tidszonsbeskrivningen använder standardsträngen Olson Timezone Identifier.



  1. En enkel taggningsimplementering med MongoDB

  2. Hur tar man bort arrayelement i mongodb?

  3. DataFrame till RDD[(String, String)] konvertering

  4. Hur får jag Redis att köra på Azure?