Use $ along with update command to update tag records. Let us create a collection with documents −
> db.demo713.insertOne( ... { ... tags: ... [ ... { ... id:101, ... Name:"Tag-1" ... }, ... { ... id:102, ... Name:"Tag-3" ... }, ... { ... id:103, ... Name:"Tag-3" ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5ea8625a5d33e20ed1097b87") }
Display all documents from a collection with the help of find() method −
> db.demo713.find();
This will produce the following output −
{ "_id" : ObjectId("5ea8625a5d33e20ed1097b87"), "tags" : [ { "id" : 101, "Name" : "Tag-1" }, { "id" : 102, "Name" : "Tag-3" }, { "id" : 103, "Name" : "Tag-3" } ] }
Following is the query for tag update −
> db.demo713.update({"tags.id":102},{$set:{"tags.$.Name":"Tag-2"}},false,true); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Display all documents from a collection with the help of find() method −
> db.demo713.find().pretty();
This will produce the following output −
{ "_id" : ObjectId("5ea8625a5d33e20ed1097b87"), "tags" : [ { "id" : 101, "Name" : "Tag-1" }, { "id" : 102, "Name" : "Tag-2" }, { "id" : 103, "Name" : "Tag-3" } ] }