Vấn đề mà tôi chỉ đoán có thể là sau:
Bạn đang thực hiện các hoạt động tìm kiếm dựa trên nhiều tiêu chí. Điều đó có nghĩa là nếu nó không thành công do bất kỳ thông số nào không khớp (trong tiêu chí) thì nó sẽ cố gắng chèn tài liệu.
Vì vậy, rất có thể là bạn đang cố gắng cập nhật cùng một tài liệu với cùng một _id nhưng một số tiêu chí khác không khớp, khiến nó phải chèn lại, điều này sẽ gây ra ngoại lệ khóa trùng lặp. Hãy xem xét ví dụ dưới đây
test:Mongo > db.example.update({ _id : 1, a : 1, b : 1},{ $set : {d : 1}}, true, false)
test:Mongo > db.example.find()
{ "_id" : 1, "a" : 1, "b" : 1, "d" : 1 }
test:Mongo > db.example.update({ _id : 1, a : 1, b : 2},{ $set : {d : 1}}, true, false)
E11000 duplicate key error index: test.example.$_id_ dup key: { : 1.0 }