MongoDB query to set a sub item in an array?



You can use positional $ operator. Let us first create a collection with documents −

> db.demo22.insertOne( ...    { ...       ProductId:101, ... ...       ProductDetails: ...       [ ...          { ...             ProductFirstPrice: '35', ...             ProductSecondPrice: '75' ...          }, ...          { ...             ProductFirstPrice: '', ...             ProductSecondPrice:'' ...          }, ...          { ...             ProductFirstPrice: '78', ...             ProductSecondPrice:'24' ...          } ...       ] ...    } ... ... ); {    "acknowledged" : true,    "insertedId" : ObjectId("5e14c0b422d07d3b95082e70") }

Display all documents from a collection with the help of find() method −

> db.demo22.find().pretty();

This will produce the following output −

{    "_id" : ObjectId("5e14c0b422d07d3b95082e70"),    "ProductId" : 101,    "ProductDetails" : [       {          "ProductFirstPrice" : "35",          "ProductSecondPrice" : "75"       },       {          "ProductFirstPrice" : "",          "ProductSecondPrice" : ""       },       {          "ProductFirstPrice" : "78",          "ProductSecondPrice" : "24"       }    ] }

Following is the MongoDB query to set a sub item in an array −

> db.demo22.update({ "ProductDetails.ProductFirstPrice" : "35" }, ... { $set : { "ProductDetails.$.ProductFirstPrice" : "" }}, false, true); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Display all documents from a collection with the help of find() method −

> db.demo22.find().pretty();

This will produce the following output −

{    "_id" : ObjectId("5e14c0b422d07d3b95082e70"),    "ProductId" : 101,    "ProductDetails" : [       {          "ProductFirstPrice" : "",          "ProductSecondPrice" : "75"       },       {          "ProductFirstPrice" : "",          "ProductSecondPrice" : ""       },       {          "ProductFirstPrice" : "78",          "ProductSecondPrice" : "24"       }    ] }
Updated on: 2020-04-01T14:46:08+05:30

282 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements