MongoDB - Update objects in a document's array 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: how to update data subdocument array mongodb

// mongodb operation
db.getCollection('profilesservices').update({
  _id: ObjectId("6037ad8ac8f713f1d31abe38"), 
 "workExperience._id": ObjectId("6037ad8ac8f713f1d31abe39")}, 
   { $set: { "workExperience.$.companyName": "bukalapak" }
   
})


//sample data
}
    "profileId" : "Sa4Dq9Xuw",
    "photo" : "https://res.cloudinary.com/coding-street-art/image/upload/v1614261651/yxnvpazindsvz6lfst3m.jpg",
    "gender" : "pria",
    "birthDate" : ISODate("1997-03-19T17:00:00.000Z"),
    "status" : "mahasiswa",
    "nationality" : "indonesia",
    "aboutMe" : null,
    "resume" : "https://res.cloudinary.com/coding-street-art/raw/upload/v1614261653/bemkbknvhzknxffmala2.doc",
    "skills" : [ 
        "javascript", 
        "typescript", 
        "react", 
        "vuejs", 
        "express.js", 
        "nodejs"
    ],
    "userId" : "602e8f43c0e227e6cb80bc56",
    "workExperience" : [ 
        {
            "companyName" : "bukalapak", //before value is bukopin
            "jobPosition" : "data entry",
            "startDate" : ISODate("2015-02-14T17:00:00.000Z"),
            "endDate" : ISODate("2017-07-27T17:00:00.000Z"),
            "workInformation" : "",
            "_id" : ObjectId("6037ad8ac8f713f1d31abe39")
        }, 
        {
            "companyName" : "procar international finance",
            "jobPosition" : "general affair",
            "startDate" : ISODate("2015-02-14T17:00:00.000Z"),
            "endDate" : ISODate("2017-07-27T17:00:00.000Z"),
            "workInformation" : "",
            "_id" : ObjectId("507f1f77bcf86cd799439011")
        }
    ],
    "education" : [ 
        {
            "institutionName" : "unindra",
            "educationDegree" : "sarjana",
            "fieldStudy" : "tehnik informatika",
            "startDate" : ISODate("2015-03-24T17:00:00.000Z"),
            "endDate" : ISODate("2020-03-24T17:00:00.000Z"),
            "educationInformation" : "",
            "_id" : ObjectId("6037ad8ac8f713f1d31abe3a")
        }
    ],
    "appreciation" : [],
    "volunteerExperience" : [],
    "__v" : 0
}