sql >> Database >  >> NoSQL >> MongoDB

update specifiek element van geneste documentarray mongodb waar twee overeenkomsten zijn

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

Gebruik $ (update)

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

Lees upsert :waar

Bijwerken

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

Gebruik $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. Fout bij maken van bean met naam 'personRepository':aanroepen van init-methode is mislukt; geneste uitzondering is com.mongodb.util.JSONParseException:

  2. $addFields als er geen $match is gevonden

  3. Wat is de beste manier om met samengestelde sleutels om te gaan bij het gebruik van Salat met MongoDB?

  4. Wat is de opdracht db.collection.stats() in mangoest?