 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Update field in exact element array in MongoDB?
You can update the in exact element array in MongoDB with the help of below statement. The syntax is as follows:
{"yourArrayDocumentName.$.yourNestedArrayDocument.yourPosition":"yourValue"}}); To understand the above syntax, let us create a collection with some documents. The query to create a collection with document is as follows:
> db.updateExactField.insertOne({"ActorId":1,"ActorDetails":[{"ActorName":"Johnny Depp","MovieList": ["The Tourist","Public Enemy"]}, ... {"ActorName":"Chris Evans","MovieList":["Captain America","Avengers"]}]}); {    "acknowledged" : true,    "insertedId" : ObjectId("5c6d7f63f2db199c1278e7f1") } Now you can display documents from a collection with the help of find() method. The query is as follows:
> db.updateExactField.find().pretty();
The following is the output:
{    "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),    "ActorId" : 1,    "ActorDetails" : [       {          "ActorName" : "Johnny Depp",          "MovieList" : [             "The Tourist",             "Public Enemy"          ]       },       {          "ActorName" : "Chris Evans",          "MovieList" : [             "Captain America",             "Avengers"          ]       }    ] } Case 1: Here, update with exact array elements i.e. position 3rd, which is index 2 because array starts from 0. The query is as follows:
> db.updateExactField.update( ... {"ActorDetails.ActorName":"Chris Evans"}, ... {$set: ... {"ActorDetails.$.MovieList.2":"Avengers:Infinity War"}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Let us display the document from the collection with the help of find(). The query is as follows:
> db.updateExactField.find().pretty();
The following is the output:
{    "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),    "ActorId" : 1,    "ActorDetails" : [       {          "ActorName" : "Johnny Depp",          "MovieList" : [             "The Tourist",             "Public Enemy"          ]       },       {          "ActorName" : "Chris Evans",          "MovieList" : [             "Captain America",             "Avengers",             "Avengers:Infinity War"          ]       }    ] } Look at the above output, the value “Avengers:Infinite War” is at position 3rd i.e. index 2.
Case 2: Let us now update with index 1 i.e. position 2nd. The query is as follows:
> db.updateExactField.update( {"ActorDetails.ActorName":"Chris Evans"}, {$set: {"ActorDetails.$.MovieList.1":"Gifted"}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Let us check the document from a collection with the help of find() method. The query is as follows:
> db.updateExactField.find().pretty();
The following is the output:
{    "_id" : ObjectId("5c6d7f63f2db199c1278e7f1"),    "ActorId" : 1,    "ActorDetails" : [       {          "ActorName" : "Johnny Depp",          "MovieList" : [             "The Tourist",             "Public Enemy"          ]       },       {          "ActorName" : "Chris Evans",          "MovieList" : [             "Captain America",             "Gifted",             "Avengers:Infinity War"          ]       }    ] } Look at the above sample output, the value “Gifted” is at position 2 i.e. index 1.
