update an array of objects in in mongodb 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 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"
]
},