MongoDBコレクションのスキーマを変更しようとしています。 (私は文字列として日付を格納していましたが、今ではアプリケーションにISODate
という名前が格納されています;古いレコードをすべて変更してISODate
を使用するように変更する必要があります)。私は更新を使用してこれを行う方法を知っていると思いますしかし、この操作は何万レコードにも影響するため、私は100%確実ではない操作を実行することを躊躇しています。少数のレコード、元のレコード、そしてそれがどのように変更されるのかを私に示す更新プログラムの「ドライラン」を行う方法はありますか?アップデート操作の「ドライラン」を実行する方法はありますか?
編集:私は、各レコードに新しいフィールドを追加する、とのアプローチを使用して終了元に一致するように、そのフィールドの名前を変更(データが正しかったことを確認した後)。 ISODate
sまでの文字列時間を変換するための方法が働くことになった何だったこと、ところで
db.events.find({timestamp: {$type: 2}})
.forEach(function (e) {
e.newTimestamp = new ISODate(e.timestamp);
db.events.save(e);
})
db.events.update({},
{$rename: {'newTimestamp': 'timestamp'}},
{multi: true})
:それはこのように見えました。 (私はthis SO answerからアイディアを得ました)
私の助言は、新しいフィールドとしてISODateを追加することです。一度すべてが良く見えたら、文字列の日付を設定解除することができます。 –
@JamesWahlin私はこれをしない乾いた実行をサポートするSQLの中でも、正しいアイデアを持っています – Sammaye
@JamesWahlin答えとしてあなたのコメントを追加できますか? – bdesham