sql >> Databáze >  >> NoSQL >> MongoDB

Agregát Mongodb:převeďte datum na jiné časové pásmo

Jako aktualizace má MongoDB 3.6 nový parametr časového pásma pro manipulaci s datem v agregačním rámci. Většina operátorů souvisejících s datem přijímá tento volitelný parametr, viz $hour pro jeden příklad.

Například pokud máme dokument, kde je datum přesně na nový rok v UTC:

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

Můžeme zobrazit datum v newyorském časovém pásmu:

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

Můžeme také zobrazit datum v časovém pásmu 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 }

Popis časového pásma používá standardní řetězec Olson Timezone Identifier.



  1. MongoDB $indexOfArray

  2. Zkontrolujte, zda běží redis -> node js

  3. získání atributů schématu z modelu Mongoose

  4. Jaká je výhoda použití vlastního backendu Gorilla sessions?