Saya mendapat kesan bahwa ini adalah perilaku MongoDB normal, dan tidak ada hubungannya dengan driver Java.
Satu-satunya hal yang dapat saya temukan dalam dokumentasi adalah ini :
Sebuah insert
bukan update
atau remove
, n
tampaknya tidak ditentukan dan 0 sama bagusnya dengan nilai default. Anda dapat memeriksanya dengan cukup mudah di mongo shell:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
Kecuali saya salah, itu bukan masalah:tanyakan pada diri Anda dalam keadaan apa penyisipan akan gagal (selain, katakanlah, kegagalan koneksi). Satu-satunya yang dapat saya pikirkan adalah pelanggaran batasan unicity, yang akan menghasilkan pengecualian. Jadi hampir secara definisi, fakta bahwa Anda menerima WriteResult
instance sama sekali berarti operasi berhasil dan dokumen dimasukkan.
Beberapa catatan:
- argumen saya sebelumnya bergantung pada
WriteConcern
your Anda cukup tinggi sehingga kesalahan dilaporkan. Jika Anda menggunakanWriteConcern.NONE
, misalnya, tidak ada pengecualian yang akan diajukan. - jika jumlah dokumen yang diperbarui merupakan keharusan mutlak bagi Anda, Anda selalu dapat menggunakan
save
alih-alihinsert
. Tidak terlalu bersih, tetapi berperilaku seperti yang Anda harapkan.