1
私はmongodbにいくつかの破損した文書がありますので、修正しなければならない修復スクリプトを書きたいと思います。ただし、動作しません。ObjectIdから文字列にタイプを変更します
db.History.find({_id:{ $type: "objectId" }}).forEach(function (x) {
x._id = x._id.valueOf(); // convert field to string
db.History.replaceOne({BId:x.BId, "Version.Version": x.Version.Version}, x);
});
しかし、私はどのようにそれは例外
Failed to execute script.
Error: WriteError: The _id field cannot be changed from {_id: ObjectId('59cd189e6e5c9e1ca90b072c')} to {_id: "59cd189e6e5c9e1ca90b072c"}.
を行うことができますか? ObjectIdフィールドを文字列として逆シリアル化できないため、私は今ではアプリケーション層で例外が発生しています。
。私はあなたの最後の2行を交換する方が良いと思います。 –