Hello Everyone,
In this blog we will discuss about how to update multiple array elements in MongoDb using a single query.
Let say we have a collection in MongoDb named "Form" which consists of the below available documents:
> db.Form.find().pretty()
{
"_id" : ObjectId("5637345bb8bd53700e2ec054"),
"title" : "Customer Complaints",
"formData" : [
{
"minimise" : true,
"label" : "test",
"value" : "",
"type" : "textInput",
"required" : false,
"description" : "Eg.Josh",
"metaData" : {
"placeholder" : "Enter name"
}
},
{
"label" : "test",
"value" : "",
"type" : "textArea",
"required" : false,
"description" : "eg.street one",
"metaData" : {
"placeholder" : "placeholder"
}
},
{
"label" : "test",
"value" : "",
"type" : "select",
"required" : false,
"description" : "description",
"metaData" : {
"placeholder" : "placeholder",
"options" : [
"Male",
"Female"
]
}
}
],
"userId" : "sf12h12a412s",
"userName" : "Ankit Chettri"
}
{
"_id" : ObjectId("56373832b8bd53700e2ec057"),
"title" : "User requirements",
"formData" : [
{
"label" : "test",
"value" : null,
"type" : "sliderInput",
"required" : false,
"description" : "Range",
"metaData" : {
"ceiling" : 10000,
"floor" : 1000,
"step" : "1000"
}
},
{
"label" : "test",
"value" : "",
"type" : "switchInput",
"required" : false,
"description" : "options",
"metaData" : {
"switch_value_one" : "Yes",
"switch_value_two" : "No"
}
}
],
"userId" : "sf12h12a412s",
"userName" : "Ankit Chettri"
}
If you want to update the content of label of multiple array elements in the above (Form)documents in one query below is the query:-
db.Form.find().forEach(function (Form) {Form.formData.forEach(function (formData) {formData.label="Name";db.Form.save(Form);});})
Output
> db.Form.find().pretty()
{
"_id" : ObjectId("5637345bb8bd53700e2ec054"),
"title" : "Customer Complaints",
"formData" : [
{
"minimise" : true,
"label" : "Name",
"value" : "",
"type" : "textInput",
"required" : false,
"description" : "Eg.Josh",
"metaData" : {
"placeholder" : "Enter name"
}
},
{
"label" : "Name",
"value" : "",
"type" : "textArea",
"required" : false,
"description" : "eg.street one",
"metaData" : {
"placeholder" : "placeholder"
}
},
{
"label" : "Name",
"value" : "",
"type" : "select",
"required" : false,
"description" : "description",
"metaData" : {
"placeholder" : "placeholder",
"options" : [
"Male",
"Female"
]
}
}
],
"userId" : "sf12h12a412s",
"userName" : "Ankit Chettri"
}
{
"_id" : ObjectId("56373832b8bd53700e2ec057"),
"title" : "User requirements",
"formData" : [
{
"label" : "Name",
"value" : null,
"type" : "sliderInput",
"required" : false,
"description" : "Range",
"metaData" : {
"ceiling" : 10000,
"floor" : 1000,
"step" : "1000"
}
},
{
"label" : "Name",
"value" : "",
"type" : "switchInput",
"required" : false,
"description" : "options",
"metaData" : {
"switch_value_one" : "Yes",
"switch_value_two" : "No"
}
}
],
"userId" : "sf12h12a412s",
"userName" : "Ankit Chettri"
}
0 Comment(s)