Saya terkejut menemukan bahwa kode contoh berikut ini hanya memperbarui satu dokumen:
> db.test.save({"_id":1, "foo":"bar"});
> db.test.save({"_id":2, "foo":"bar"});
> db.test.update({"foo":"bar"}, {"$set":{"test":"success!"}});
> db.test.find({"test":"success!"}).count();
1
Saya tahu saya bisa mengulang dan terus memperbarui sampai semuanya berubah, tetapi itu tampaknya sangat tidak efisien. Apakah ada cara yang lebih baik?
Mulai di v3.3 Anda dapat menggunakan pembaruanBanyak
Di v2.2, fungsi pembaruan mengambil bentuk berikut:
https://docs.mongodb.com/manual/reference/method/db.collection.update/
sumber
Untuk versi Mongo> 2.2 , tambahkan bidang multi dan setel ke true
sumber
Saya telah menciptakan cara untuk melakukan ini dengan antarmuka yang lebih baik.
db.collection.find({ ... }).update({ ... })
- pembaruan multidb.collection.find({ ... }).replace({ ... })
- penggantian tunggaldb.collection.find({ ... }).upsert({ ... })
- Upert tunggaldb.collection.find({ ... }).remove()
- hapus multiAnda juga dapat menerapkan batas, lewati, mengurutkan untuk pembaruan dan menghapus dengan merantai sebelumnya.
Jika Anda tertarik, periksa Mongo-Hacker
sumber
db.userActivity.find({ 'appId' : 1234, 'status' : 1}).update({ $set: { 'status': 1 } }); 2017-06-05T17:47:10.038+0530 E QUERY [thread1] TypeError: db.userActivity.find(...).update is not a function :
Di Klien MongoDB, ketik:
Baru dalam versi 3.2
Params ::
Argumen kata kunci
multi
tidak diambilsumber
MongoDB akan menemukan hanya satu dokumen yang cocok yang cocok dengan kriteria kueri saat Anda mengeluarkan perintah pembaruan, dokumen mana pun yang pertama kali cocok akan diperbarui, bahkan jika ada lebih banyak dokumen yang cocok dengan kriteria akan diabaikan.
jadi untuk mengatasinya, kita dapat menentukan opsi "MULTI" dalam pernyataan pembaruan Anda, yang berarti memperbarui semua dokumen yang cocok dengan kriteria kueri. pindai semua dokumen dalam koleksi, temukan yang cocok dengan kriteria dan perbarui:
sumber
Perintah berikut dapat memperbarui beberapa catatan koleksi
sumber
Saya memiliki masalah yang sama, dan saya menemukan solusinya, dan itu bekerja seperti pesona
cukup atur multi-flag menjadi true seperti ini:
saya harap itu membantu :)
sumber
Untuk Memperbarui Seluruh Koleksi,
sumber
Anda bisa menggunakannya.`
sumber
Semua versi terbaru dari mongodb updateMany () berfungsi dengan baik
sumber
Terima kasih telah berbagi ini, saya menggunakan 2.6.7 dan mengikuti kueri yang hanya berfungsi,
untuk semua dokumen:
untuk dokumen tunggal:
sumber