sql >> Database >  >> NoSQL >> MongoDB

Mongodb-aggregaat:converteer datum naar een andere tijdzone

Als update heeft MongoDB 3.6 een nieuwe tijdzoneparameter voor datummanipulatie in het aggregatieraamwerk. De meeste datumgerelateerde operators accepteren deze optionele parameter, zie $hour voor een voorbeeld.

Als we bijvoorbeeld een document hebben waarin de datum precies het nieuwe jaar is in UTC:

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

We kunnen de datum weergeven in de tijdzone van 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 }

We kunnen de datum ook weergeven in de tijdzone van 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 }

De tijdzonebeschrijving gebruikt de standaard Olson Timezone Identifier string.



  1. waarom kan ik de mongodb niet starten?

  2. SCUMM:de op agenten gebaseerde databasebewakingsinfrastructuur in ClusterControl

  3. Node.js Mongoose.js-tekenreeks naar ObjectId-functie

  4. Hoe voeg ik een element toe aan de interne lijst van MongoDB?