1. ホーム
  2. mongodb

[解決済み] ひとつの MongoDB ドキュメントの _id を更新するには?

2022-04-27 20:26:21

質問

を更新したい。 _id フィールドを使用します。本当は良くないことだと分かっています。しかし、技術的な理由から、私はそれを更新する必要があります。

更新しようとすると、次のようになります。

db.clients.update({ _id: ObjectId("123")}, { $set: { _id: ObjectId("456")}})

Performing an update on the path '_id' would modify the immutable field '_id'

そして、更新が拒否されます。どうすれば更新できるのでしょうか?

解決方法は?

更新はできません。ドキュメントを保存するには、新しい _id そして、古いドキュメントを削除してください。

// store the document in a variable
doc = db.clients.findOne({_id: ObjectId("4cc45467c55f4d2d2a000002")})

// set a new _id on the document
doc._id = ObjectId("4c8a331bda76c559ef000004")

// insert the document, using the new _id
db.clients.insert(doc)

// remove the document with the old _id
db.clients.remove({_id: ObjectId("4cc45467c55f4d2d2a000002")})