sql >> Database >  >> NoSQL >> MongoDB

Hoe om te gaan met het tijdzoneprobleem bij het opslaan van datums in utc met behulp van mongod?

Afgezien van de door Matt Johnson genoemde SERVER-6310, is een andere oplossing het gebruik van het $project operator om op te tellen bij of af te trekken van de UTC-tijdzone om "de tijd te verschuiven" naar de juiste lokale zone. Het blijkt dat je tijd in milliseconden kunt optellen of aftrekken.

Bijvoorbeeld, ervan uitgaande dat ik een datumveld heb met de naam orderTime . Ik wil graag een vraag stellen voor EDT. Dat is -4 uur vanaf UTC. Dat is 4 * 60 * 60 * 1000 milliseconden.

Dus ik zou dan de volgende projectie schrijven om day_ordered . te krijgen in lokale tijd voor al mijn records:

db.table.aggregate( 
    { $project : { orderTimeLocal : { $subtract : [ "$orderTime", 14400000] } } },
    { $project : { day_ordered : { $dayOfYear : "$orderTimeLocal" } } })


  1. Hoe MongoDB op Heroku . te implementeren

  2. MongoDB $sin

  3. Ideeën voor het schalen van chat in AWS?

  4. Ingesloten document versus referentie in het ontwerpmodel van mangoest?