Masalah yang saya duga mungkin sebagai berikut:
Anda melakukan operasi pencarian berdasarkan banyak kriteria. Itu berarti jika gagal karena ketidakcocokan param ( dalam kriteria ) maka ia akan mencoba memasukkan dokumen.
Jadi, kemungkinan ada, bahwa Anda mencoba memperbarui dokumen yang sama dengan _id yang sama tetapi beberapa kriteria lain tidak cocok, menyebabkannya dimasukkan lagi yang akan menyebabkan pengecualian kunci duplikat. Perhatikan contoh di bawah ini
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 }