Tôi đã tạo chỉ mục thưa thớt và duy nhất trên bộ sưu tập mongodb của mình.Mongodb chỉ số thưa thớt độc đáo
var Account = new Schema({
email: { type: String, index: {unique: true, sparse: true} },
....
Nó đã được tạo ra một cách chính xác:
{ "ns" : "MyDB.accounts", "key" : { "email" : 1 }, "name" : "email_1", "unique" : true, "sparse" : true, "background" : true, "safe" : null }
Nhưng nếu tôi chèn một tài liệu thứ hai với một phím không thiết lập tôi nhận được lỗi này:
{ [MongoError: E11000 duplicate key error index: MyDB.accounts.$email_1 dup key: { : null }]
name: 'MongoError',
err: 'E11000 duplicate key error index: MyDB.accounts.$email_1 dup key: { : null }',
code: 11000,
n: 0,
ok: 1 }
Bất kỳ gợi ý?
bạn có thể kiểm tra trong bộ sưu tập không, nếu có bất kỳ tài liệu nào có 'null' cho trường email. Nó có thể xảy ra rằng các công cụ mẫu mà bạn đang sử dụng là chèn giá trị null cho trường đó. Tôi kiểm tra tại địa phương, nó hoạt động tốt. –
Bằng cách đặt 'email' thành' unique', nó bắt buộc phải là duy nhất cho mọi tài liệu trong bộ sưu tập. Chỉ có một giá trị 'null' chẳng hạn. Vì vậy, điều này có vẻ như nó hoạt động như mong đợi. – WiredPrairie
Chỉ cần trả lời câu hỏi này: http://stackoverflow.com/questions/17114851/mongo-id-field-duplicate-key-error/17115770#17115770 - nó rất giống nhau (và có khả năng giống nhau) vấn đề. – WiredPrairie