
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
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.