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

perbarui elemen tertentu dari mongodb array dokumen bersarang di mana memiliki dua kecocokan

Demo - https://mongoplayground.net/p/VaE28ujeOPx

Gunakan $ (update)

db.collection.update({
  "notes": {
    "$elemMatch": { "block": 2, "curse": 5 }
  }
},
{
  $set: { "notes.$.score.b4": 40 }
})

Baca upsert :benar

Perbarui

Demo - https://mongoplayground.net/p/iQQDyjG2a_B

Gunakan $function

db.collection.update(
    { "_id": "sad445" },
    [
      {
        $set: {
          notes: {
            $function: {
              body: function(notes) {
                        var record = { curse:5, block:2, score:{ b4:40 } };
                        if(!notes || !notes.length) { return [record]; } // create new record and return in case of no notes
                        var updated = false;
                        for (var i=0; i < notes.length; i++) {
                            if (notes[i].block == 2 && notes[i].curse == 5) { // check condition for update
                                updated = true;
                                notes[i].score.b4=40; break; // update here
                            }
                        }
                        if (!updated) notes.push(record); // if no update push the record in notes array
                        return notes;
                    },
              args: [
                "$notes"
              ],
              lang: "js"
            }
          }
        }
      }
    ]
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. batasi untuk menyimpan nilai duplikat di mongodb

  2. Performa kueri pembaruan Mongo DB

  3. Bagaimana cara menentukan rentang sharding untuk setiap shard di Mongo?

  4. Setel beberapa bidang dengan satu kueri pembaruan

  5. Mongorestore dari db menyebabkan saya kesulitan