Không thể cập nhật trực tiếp _id nhưng có thể lưu _id mới và xóa _id cũ. Các bước:
- Bước 1: Lưu ObjectId vào biến.
var myId = db.yourCollectionName.findOne({_id: yourObjectIdValue}); - Bước 2: Gán _id mới.
myId._id = yourNewObjectIdValue; - Bước 3: Chèn tài liệu với _id mới.
db.yourCollectionName.insert(myId); - Bước 4: Xóa tài liệu _id cũ.
db.yourCollectionName.remove({_id: yourOldObjectIdValue});
Ví dụ với collection updateIdDemo:
> db.updateIdDemo.insertOne({"StudentName":"Robert"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6ebfec6fd07954a4890683") }
... (thêm Chris, Maxwell) ...
Thực hiện 4 bước đổi _id của Robert:
Step1: > myId=db.updateIdDemo.findOne({_id:ObjectId("5c6ebfec6fd07954a4890683")});
{ "_id" : ObjectId("5c6ebfec6fd07954a4890683"), "StudentName" : "Robert" }
Step 2: > myId._id=ObjectId("5c6ebfec6fd07954a4890689");
ObjectId("5c6ebfec6fd07954a4890689")
Step 3: > db.updateIdDemo.insert(myId);
WriteResult({ "nInserted" : 1 })
Step 4: > db.updateIdDemo.remove({_id:ObjectId("5c6ebfec6fd07954a4890683")});
WriteResult({ "nRemoved" : 1 })
Kiểm tra: _id của Robert đã thay đổi thành giá trị mới.