Trong mongodb, mỗi tài liệu phải là duy nhất, vì vậy bạn cần một trường duy nhất được sử dụng làm id. Nếu bạn không cung cấp, mongodb sẽ tự động cung cấp cho bạn. Tuy nhiên, nếu bạn muốn cung cấp id tùy chỉnh cho bất kỳ lý do nào (cải thiện hiệu suất truy vấn là một trong số chúng), bạn có thể thực hiện theo cách thủ công. Đây là gợi ý của tôi:
Nếu bạn đang chèn một tài liệu mới, bạn có thể đặt trường _id theo cách thủ công như:
doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)
Nhưng khi bạn đã có một tài liệu trong cơ sở dữ liệu, bạn không thể sửa đổi nó nữa. Những gì bạn có thể làm là tạo một bản sao của tài liệu, lưu tài liệu mới với cùng dữ liệu và xóa tài liệu cũ:
// Fetch the documents
docs = db.clients.find({})
docs.forEach((doc) => {
//For each field you copy the values
new_doc.field = doc.field
new_doc._id = //YOUR ID FUNCTION
// insert the document, using the new _id
db.clients.insert(new_doc)
// remove the document with the old _id
db.clients.remove({_id: doc._id})
}
Câu hỏi này tương tự như câu hỏi sau:
Làm cách nào để cập nhật _id của một Tài liệu MongoDB?
Hy vọng câu trả lời của tôi hữu ích