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

Mongodb:Dorong elemen ke array bersarang jika kondisinya terpenuhi

Masalahnya di sini adalah kesalahpahaman Anda tentang hal-hal yang berhubungan.

Ketika Anda melakukan "outerArray.field.innerArray": { $in: [ 1, 3 ] } ke dalam kueri Anda, Anda tidak hanya mendapatkan innerArray mana memiliki 1 atau 3. Anda mendapatkan dokumen di mana ada array ini.

Jadi Anda menanyakan seluruh dokumen.

Anda harus menggunakan arrayFilter untuk memperbarui nilai saat filter cocok.

Jadi, Jika saya sudah memahami Anda dengan benar, pertanyaan yang Anda inginkan adalah:

db.collection.update(
{}, //Empty object to find all documents
{
  $push: { "outerArray.$[elem].field.innerArray": 4 }
},
{
  "arrayFilters": [ { "elem.field.innerArray": { $in: [ 1, 3 ] } } ]
})

Contoh di sini

Perhatikan bagaimana objek pertama menjadi update kosong. Anda harus meletakkan bidang di sana agar sesuai dengan dokumen (bukan larik, dokumen).

Jika Anda ingin memperbarui hanya satu dokumen Anda harus mengisi terlebih dahulu objek (objek kueri) dengan nilai yang Anda inginkan, misalnya:{"_id": 11} .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb Bagaimana cara mengagregasi berdasarkan bulan dan tahun

  2. Menyempurnakan Seni Mengotomatisasi &Mengelola Basis Data Open Source Paling Populer:2017 @ Somenines

  3. Objek koleksi bukan kesalahan yang dapat dipanggil dengan PyMongo

  4. Menerapkan Pagination dengan MongoDB, Express.js &Slush

  5. Mongodb Jelaskan untuk kerangka Agregasi