Update Object With Given Id Embed In Array Without Restructuring Mongo Database
I've got the following document named 'clients' which includes id, name and list of projects (array of objects): { '_id': { '$oid': '572225d997bb651819f379f7' },
Solution 1:
If you want to update the "job_description" where name="ppg" and project_id=20 then you can use below mongo query:-
db.clients.update({ "name":"ppg","projects.projectID":20 },{$set: {"projects.$.job_description": "abcd"}})
Please let me know if any thing else is required
Solution 2:
You cannot update multiple array elements in single update operation, instead you can update one by one which takes time depends upon number of elements in array and number of such documents in collection. see New operator to update all matching items in an array
db.test2.find().forEach( function(doc) {
var projects = doc.projects;
for(var i=0;i<projects.length;i++){
var project = projects[i];
if(project.projectID == 20){
var field = "projects."+i+".job_description";
var query = {};
query[field] = "textasdsd";
db.test2.update({ _id: doc._id},{ $set:query});
}
}
})
Post a Comment for "Update Object With Given Id Embed In Array Without Restructuring Mongo Database"