Saya memiliki koleksi bernama foo
hipotetis.
Setiap instance dari foo
memiliki bidang yang disebut lastLookedAt yang merupakan cap waktu UNIX sejak zaman. Saya ingin dapat melewati klien MongoDB dan mengatur stempel waktu itu untuk semua dokumen yang ada (sekitar 20.000 di antaranya) ke stempel waktu saat ini.
Apa cara terbaik untuk menangani ini?
Jawaban:
Terlepas dari versi, untuk contoh Anda,
<update>
ini adalah:Namun, tergantung pada versi MongoDB Anda, kueri akan terlihat berbeda. Terlepas dari versi, kuncinya adalah bahwa kondisi kosong
{}
akan cocok dengan dokumen apa pun . Di shell Mongo, atau dengan klien MongoDB apa pun:$ versi> = 3.2 :
{}
adalah kondisinya (kondisi kosong cocok dengan dokumen apa pun)3.2> $ versi> = 2.2 :
{}
adalah kondisinya (kondisi kosong cocok dengan dokumen apa pun){multi: true}
adalah opsi "perbarui banyak dokumen"$ versi <2.2 :
{}
adalah kondisinya (kondisi kosong cocok dengan dokumen apa pun)false
untuk parameter " upsert "true
untuk parameter "multi" (perbarui beberapa catatan)sumber
Kode ini akan sangat membantu Anda
sumber
Saya telah menggunakan driver MongoDB .NET selama sebulan lebih sedikit. Jika saya melakukannya menggunakan driver .NET, saya akan menggunakan metode Pembaruan pada objek koleksi. Pertama, saya akan membuat kueri yang akan memberi saya semua dokumen yang saya minati dan melakukan Pembaruan pada bidang yang ingin saya ubah. Pembaruan dalam bahasa Mongo hanya memengaruhi dokumen pertama dan untuk memperbarui semua dokumen yang dihasilkan dari kueri, seseorang harus menggunakan bendera pembaruan 'Multi'. Kode contoh mengikuti ...
sumber