mongoose update document array code example

Example 1: mongoose modify all elements in array

// Playground: https://mongoplayground.net/p/-TgGWwBd5l-
db.collection.update({
  "_id": "password"
},
{
  "$inc": {
    "waitlist.$[].queue_place": -1
  }
})

// Database
/*
[
  {
    "_id": "password",
    "waitlist": [
      {
        "_id": "adasd",
        "queue_place": 123
      },
      {
        "_id": "ada43sd",
        "queue_place": 2
      }
    ]
  }
]
*/

Example 2: updating an array of object in mongoose

Person.update(
   {
     _id: 5,
     grades: { $elemMatch: { grade: { $lte: 90 }, mean: { $gt: 80 } } }
   },
   { $set: { "grades.$.std" : 6 } }
)

Example 3: how to update data subdocument array in mongoose

// 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 valie 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
}

Example 4: mongoose update array in object

Person.findOneAndUpdate({_id: id}, 
{ 
  "$set": {[`items.$[outer].${propertyName}`]: value} 
},
{ 
  "arrayFilters": [{ "outer.id": itemId }]
},
function(err, response) {
  ...
})