इसके लिए MongoDB में findOneAndUpdate() का उपयोग करें। findOneAndUpdate() method filter और sort criteria के आधार पर single document update करता है।
Collection बनाना
> db.demo553.insertOne(
... {
... id:101,
... "Name":"John",
... midExamDetails:
... [
... {"SubjectName":"MySQL","Marks":70},
... {"SubjectName":"MongoDB","Marks":35}
... ]
... }
... );
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e3da19e5f92834d7f05ed") }
सभी Documents Display करना
> db.demo553.find();
Output:
{ "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"), "id" : 101, "Name" : "John", "midExamDetails" : [ { "SubjectName" : "MySQL", "Marks" : 70 }, { "SubjectName" : "MongoDB", "Marks" : 35 } ] }
Array के अंदर Object Update करने का Query
> db.demo553.findOneAndUpdate(
... { id:101, "midExamDetails.SubjectName":"MongoDB" },
... { $set:{ 'midExamDetails.$.Marks': 97 } }
... );
{ "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"), "id" : 101, "Name" : "John", "midExamDetails" : [ { "SubjectName" : "MySQL", "Marks" : 70 }, { "SubjectName" : "MongoDB", "Marks" : 35 } ] }
Updated Document Display करना
> db.demo553.find().pretty();
Output:
{
"_id" : ObjectId("5e8e3da19e5f92834d7f05ed"),
"id" : 101,
"Name" : "John",
"midExamDetails" : [
{ "SubjectName" : "MySQL", "Marks" : 70 },
{ "SubjectName" : "MongoDB", "Marks" : 97 }
]
}
व्याख्या: findOneAndUpdate में filter midExamDetails.SubjectName: "MongoDB" से matching array element find किया। $ positional operator ने matching array element की position identify की और $set से उसका Marks field update किया।