MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB:WriteResult.getN() selalu mengembalikan 0?

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 menggunakan WriteConcern.NONE , misalnya, tidak ada pengecualian yang akan diajukan.
  • jika jumlah dokumen yang diperbarui merupakan keharusan mutlak bagi Anda, Anda selalu dapat menggunakan save alih-alih insert . Tidak terlalu bersih, tetapi berperilaku seperti yang Anda harapkan.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pymongo/bson:Mengonversi objek python.cursor.Cursor menjadi objek serializable/JSON

  2. Pymongo:ulangi semua dokumen dalam koleksi

  3. Mongodb Gabung di bidang _id dari String ke ObjectId

  4. mongodb memperbarui elemen array terakhir

  5. Apa perbedaan antara COUNT_SCAN dan IXSCAN?