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

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

1 ответ

Ну, во-первых, даты в Монго - 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))}});}
);

И это слегка измененная копия этого: /questions/12946064/kak-pravilno-uvelichit-mnogo-dat-v-mongodb/12946076#12946076

Другие вопросы по тегам