Home > Software design >  How to add an extra attribute in a sub document in MongoDB
How to add an extra attribute in a sub document in MongoDB

Time:10-28

How to update/add sub-document in sub-document in mongodb. I have sample data like this:

{
    "baselineParty": {
      "AP": [
        {
          "party": {
            "partyId": {
              "value": "12345"
            },
            
          }
        },
        {
          "party": {
            "partyId": {
              "value": "12346"
            }
          }
        },
        {
          "party": {
            "partyId": {
              "value": "12347"
            }
          }
        }
      ]
    }
  }

I want to add an extra field "baselineParty.AP.party.verifiedStatusYn" to the existing json Expected result would be like this :

    {
        "baselineParty": {
          "AP": [
            {
              "party": {
                "partyId": {
                  "value": "12345"
                }
              },
              "verifiedStatusYn": {
                "by": "cdd",
                "updated": "22",
                "value": "yes"
              }
            },
            {
              "party": {
                "partyId": {
                  "value": "12346"
                }
              },
              "verifiedStatusYn": {
                "by": "cdd",
                "updated": "22",
                "value": "yes"
              }
            },
            {
              "party": {
                "partyId": {
                  "value": "12347"
                }
              },
              "verifiedStatusYn": {
                "by": "cdd",
                "updated": "22",
                "value": "yes"
              }
            }
          ]
        }
      }

I tried using $set but not getting expected result.

Do you guys have a solution for this. Thanks!

CodePudding user response:

You will need $[] to update all entries in the array.

db.collection.update({},
{
  $set: {
    "baselineParty.AP.$[].party.verifiedStatusYn": {
      "by": "cdd",
      "updated": "22",
      "value": "yes"
    }
  }
})

Here is the Mongo playground for your reference.

  • Related