MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để xóa các bản sao dựa trên một khóa trong Mongodb?

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose / node.js cách tìm, điền, thực hiện công việc, 'depopulate' và cập nhật

  2. Bắt MongoDB trên Linux để nghe các kết nối từ xa

  3. Lỗi truyền JSON.NET khi tuần tự hóa Mongo ObjectId

  4. Số lượng tham số tối đa được truyền đến $ trong truy vấn trong MongoDB là bao nhiêu?

  5. Tính nguyên tử, cô lập và đồng thời trong MongoDB