mongodb update set array element code example

Example 1: mongodb update field inside array

Consider the following document in the students collection whose grades element value is an array of embedded documents:

{
  _id: 4,
  grades: [
     { grade: 80, mean: 75, std: 8 },
     { grade: 85, mean: 90, std: 5 },
     { grade: 85, mean: 85, std: 8 }
  ]
}

Use the positional $ operator to update the std field of the first array element that matches the grade equal to 85 condition:

IMPORTANT
---------
You must include the array field as part of the query document.

db.students.updateOne(
   { _id: 4, "grades.grade": 85 },
   { $set: { "grades.$.std" : 6 } }
)
After the operation, the document has the following updated values:

{
   "_id" : 4,
   "grades" : [
      { "grade" : 80, "mean" : 75, "std" : 8 },
      { "grade" : 85, "mean" : 90, "std" : 6 },
      { "grade" : 85, "mean" : 85, "std" : 8 }
   ]
}

Example 2: mongodb replace item in array

db.movies.updateMany(
    { "languages": "French" }, 
    { "$set": { "languages.$": "Francais" } }
)

Example 3: how to change array value mongodb

db.getCollection('profilesservices').updateOne({_id: ObjectId("603ce3bf9323e811c86cb7c8")}, {
 $set: {"jobPreferences.jobInterests.1": "backend developer"}    
})

## sample database
{
    "_id" : ObjectId("603ce3bf9323e811c86cb7c8"),
    "jobPreferences" : {
        "jobId" : "3c7d3c4c-756b-490f-b6ab-9c0992b120b3",
        "jobInterests" : [ 
            "frontend developer", 
            "devOps"
        ],
        "workTypes" : [ 
            "full-time", 
            "part-time", 
            "magang", 
            "freelance"
        ],
        "salaryExpectation" : 4500000,
        "workCityPreferences" : [ 
            "bandung", 
            "jakarta", 
            "bali"
        ]
    },