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

pembaruan mongodb yang cocok dengan dokumen gagal

Ini bukan kegagalan tetapi dengan desain.

Di bawah API Operasi Massal , jika Anda memberikan nilai untuk memperbarui yang cocok dengan nilai dokumen yang ada, maka itu tidak ditandai sebagai diubah dan sebenarnya tidak melakukan upaya apa pun untuk menulis ulang dokumen.

Tes sederhana:

db.junk.insert({ "a": 1 })
WriteResult({ "nInserted" : 1 })

db.junk.update({ "a": 1},{ "$set": { "a": 2 }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.junk.update({ "a": 2 },{ "$set": { "a": 2 }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

db.junk.update({ "a": 2 },{ "$set": { "a": NumberInt(2) }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.junk.update({ },{ "$set": { "a": NumberInt(2) }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Semua operasi di shell MongoDB pada versi 2.6 sebenarnya menggunakan API Operasi Massal . Di sinilah Anda melihat WriteResult yang berasal dari API itu sebagai bukti bahwa ini terjadi.

Jadi kasus singkatnya di sini adalah jika Anda memiliki item yang "dimasukkan secara manual" dengan tipe yang benar yang Anda modifikasi, maka item tersebut tidak akan diubah.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB menemukan objek bersarang yang memenuhi kriteria

  2. $elemmatch tidak berfungsi di MongoDB

  3. Tidak dapat memperbarui data di mongodb

  4. NoClassDefFoundError setelah mengekspor toples

  5. Bagaimana cara mendapatkan status koneksi di driver C# MongoDB v2.0?