Как я могу обновить свойство даты в коллекции MongoDb, чтобы удалить часовой пояс и сделать его UTC с помощью скрипта

Я ищу небольшой скрипт для обновления существующих дат в базе данных монго и изменения их на UTC без изменения дат. Я добавлял документы в коллекцию MongoDb с некоторыми вечными свойствами даты, которые, не преднамеренно, включали местный часовой пояс. Теперь, когда я поймал свою ошибку, я устанавливаю их часовой пояс на UTC в клиенте перед отправкой: но я хочу исправить документы, которые я добавил ранее. Не могли бы вы предоставить пример сценария обновления, который волшебным образом исправляет текущую дату, которую я ввел: свойства в UTC не должны быть затронуты; те, у которых часовые пояса EST или EDT, должны стать датами UTC без изменения их дат.


person Davious    schedule 26.05.2015    source источник


Ответы (1)


Ну, во-первых, даты Mongo являются UTC, но все же в датах были часы. Чтобы удалить даты, я сделал это:

db.coll.find({$where: "this.dt && this.dt.getUTCHours() > 0"}
).forEach(function(doc) { 
  db.coll.update({ _id : doc._id }, 
   { $set : { dt : new Date(doc.dt.getTime() - 
                  (doc.dt.getUTCHours() * 60 * 60 * 1000))}});}
);

И это слегка измененная копия этого: https://stackoverflow.com/a/18773804/507421

person Davious    schedule 27.05.2015