MongoDB có thể làm điều này để tự vệ. Nếu bạn dropDups
trên trường không chính xác, bạn có thể tập hợp toàn bộ tập dữ liệu và khóa DB bằng các thao tác xóa (thao tác này "đắt" như khi viết).
Vì vậy, câu hỏi đầu tiên là tại sao bạn lại tạo một chỉ mục duy nhất trên id
lĩnh vực?
MongoDB tạo một _id
mặc định trường tự động là duy nhất và được lập chỉ mục. Theo mặc định, MongoDB điền _id
với một ObjectId
tuy nhiên, bạn có thể ghi đè giá trị này bằng bất kỳ giá trị nào bạn thích. Vì vậy, nếu bạn có một bộ giá trị ID sẵn sàng, bạn có thể sử dụng những giá trị đó .
Nếu bạn không thể nhập lại các giá trị, hãy sao chép chúng vào một bộ sưu tập mới trong khi thay đổi id
thành _id
. Sau đó, bạn có thể bỏ bộ sưu tập cũ và đổi tên bộ sưu tập mới. ( lưu ý rằng bạn sẽ nhận được một loạt "lỗi khóa trùng lặp", hãy đảm bảo rằng mã của bạn nắm bắt và bỏ qua chúng )