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
WriteConcernyour 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
savealih-alihinsert. Tidak terlalu bersih, tetapi berperilaku seperti yang Anda harapkan.