Я ищу небольшой скрипт для обновления существующих дат в базе данных монго и изменения их на UTC без изменения дат. Я добавлял документы в коллекцию MongoDb с некоторыми вечными свойствами даты, которые, не преднамеренно, включали местный часовой пояс. Теперь, когда я поймал свою ошибку, я устанавливаю их часовой пояс на UTC в клиенте перед отправкой: но я хочу исправить документы, которые я добавил ранее. Не могли бы вы предоставить пример сценария обновления, который волшебным образом исправляет текущую дату, которую я ввел: свойства в UTC не должны быть затронуты; те, у которых часовые пояса EST или EDT, должны стать датами UTC без изменения их дат.
Как я могу обновить свойство даты в коллекции MongoDb, чтобы удалить часовой пояс и сделать его UTC с помощью скрипта
Ответы (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