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

E11000 chỉ mục lỗi chính trùng lặp trong mongodb mongoose

Thông báo lỗi cho biết rằng đã có một bản ghi với null như email. Nói cách khác, bạn đã có một người dùng không có địa chỉ email.

Các tài liệu liên quan cho việc này:

Nếu tài liệu không có giá trị cho trường được lập chỉ mục trong chỉ mục duy nhất, chỉ mục sẽ lưu trữ giá trị rỗng cho tài liệu này. Do ràng buộc duy nhất, MongoDB sẽ chỉ cho phép một tài liệu thiếu trường được lập chỉ mục. Nếu có nhiều tài liệu không có giá trị cho trường được lập chỉ mục hoặc thiếu trường được lập chỉ mục, quá trình tạo chỉ mục sẽ không thành công với lỗi khóa trùng lặp.

Bạn có thể kết hợp ràng buộc duy nhất với chỉ mục thưa thớt để lọc các giá trị rỗng này khỏi chỉ mục duy nhất và tránh lỗi.

chỉ mục duy nhất

Chỉ mục thưa thớt chỉ chứa các mục nhập cho tài liệu có trường được lập chỉ mục, ngay cả khi trường chỉ mục chứa giá trị rỗng.

Nói cách khác, một chỉ mục thưa thớt là ok với nhiều tài liệu đều có null giá trị.

chỉ mục thưa thớt

Từ nhận xét:

Lỗi của bạn cho biết rằng khóa được đặt tên là mydb.users.$email_1 điều này khiến tôi nghi ngờ rằng bạn có chỉ mục trên cả users.emailusers.local.email (Cái cũ và không được sử dụng ở thời điểm hiện tại). Xóa trường khỏi mô hình Mongoose không ảnh hưởng đến cơ sở dữ liệu. Kiểm tra bằng mydb.users.getIndexes() nếu đúng như vậy và xóa chỉ mục không mong muốn theo cách thủ công bằng mydb.users.dropIndex(<name>) .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tại sao không nên sử dụng các hàm được lưu trữ phía máy chủ trong MongoDB?

  2. Cách áp dụng cập nhật bằng toán tử vị trí được lọc với arrayFilters

  3. Cảnh báo về việc kết nối với MongoDB bằng máy chủ Node

  4. Sắp xếp theo trường ảo trong mongoDB (mongoose)

  5. Cơ sở dữ liệu đám mây tự làm trên Amazon Web Services - Sách trắng mới