Câu trả lời này đã lỗi thời: dropDups
tùy chọn đã bị xóa trong MongoDB 3.0, do đó, một cách tiếp cận khác sẽ được yêu cầu trong hầu hết các trường hợp. Ví dụ:bạn có thể sử dụng tính năng tổng hợp như được đề xuất trên:tài liệu trùng lặp MongoDB ngay cả sau khi thêm khóa duy nhất.
Nếu bạn chắc chắn rằng source_references.key
xác định các bản ghi trùng lặp, bạn có thể đảm bảo một chỉ mục duy nhất với dropDups:true
tùy chọn tạo chỉ mục trong MongoDB 2.6 trở lên:
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
Điều này sẽ giữ tài liệu duy nhất đầu tiên cho mỗi source_references.key
giá trị và bỏ bất kỳ tài liệu tiếp theo nào có thể gây ra vi phạm khóa trùng lặp.
Lưu ý quan trọng :Bất kỳ tài liệu nào thiếu source_references.key
trường sẽ được coi là có null giá trị, vì vậy các tài liệu tiếp theo thiếu trường khóa sẽ bị xóa. Bạn có thể thêm sparse:true
tùy chọn tạo chỉ mục để chỉ mục chỉ áp dụng cho các tài liệu có khóa source_references.key
trường.
Thận trọng rõ ràng :Hãy sao lưu cơ sở dữ liệu của bạn và thử điều này trong môi trường dàn dựng trước nếu bạn lo lắng về việc mất dữ liệu ngoài ý muốn.