muni
muni

Reputation: 23

How to update nested array object field value in MongoDB?

Update nested object values in array, we have multiple objects in array.

{ 
    "_id" : ObjectId("5a7e395e20a31e44e0e7e284"), 
    "name" : "a", 
    "address" : [
        {
            "street" : "123", 
            "town" : "bar"
        }, 
        {
            "street" : "Lower Street", 
            "town" : "bar"
        }, 
        {
            "street" : "123", 
            "town" : "foo"
        }
    ]
}

Need to update town is HNO if street is 123.

Upvotes: -3

Views: 44

Answers (1)

Yong Shun
Yong Shun

Reputation: 51420

Use positional filtered operator $[<identifier] to update the matching element in the array.

db.collection.updateMany({
  "address.street": "123"
},
{
  $set: {
    "address.$[a].town": "HNO"
  }
},
{
  arrayFilters: [
    {
      "a.street": "123"
    }
  ]
})

Demo @ Mongo Playground

Upvotes: 1

Related Questions