Ritesh Kumar Gupta
Ritesh Kumar Gupta

Reputation: 5191

Updating complete embedded document in MongoDB

I am new to mongoDB, and I am stuck at a simple update operation:

Here is the document that I had stored:

{
  "_id" : "xyz",
  "basicinfo_showcase_components" : {
    "display_name" : "ritesh",
    "display_email" : "[email protected]",
    "international_phone_number" : "+91 .....",
  },
  "address_components" : {
    "country" : "India",
    "postal_code" : "500004",
    "state" : "Telangana",
    "city" : "Hyderabad",
    "subLocality1" : "aaaa",
    "subLocality2" : "",
    "subLocality3" : "",
    "route" : "",
    "geometry" : {
      "lat" : 17.43143576387407,
      "lng" : 78.464432457672046
    },
    "formatted_address" : "addrr"
  }
}

Now I want to updat the address_components in above document:

I tried:

db.portfolio.update({ "_id" : "xyz", "$isolated" : "true" },
{

   "address_components" : {
    "country" : "Nepal",
    "postal_code" : "878799",
    "state" : "Telangana",
     "city" : "Kathmandu",
     "subLocality1" : "xyz",
     "subLocality2" : "",
     "subLocality3" : "",
     "route" : "",
     "geometry" : {
         "lat" : 17.43143576387407,
        "lng" : 78.464432457672046
      },
         "formatted_address" : "kath..."
      }

});

But after updating, the "basicinfo_showcase_components" is eliminated.

ie. the updated doc is:

{
  "_id" : "ohris",
 "address_components" : {
   .......
  }
}

Can you please point out the mistake?

Upvotes: 1

Views: 44

Answers (1)

Disposer
Disposer

Reputation: 6371

In your update query you passed whole document as your update document, if you want to update just one (or more) fields of document you should use $set operator:

db.test.update({ "_id" : "xyz", "$isolated" : "true" },
{
   $set : {
   "address_components" : {
    "country" : "Nepal",
    "postal_code" : "878799",
    "state" : "Telangana",
     "city" : "Kathmandu",
     "subLocality1" : "xyz",
     "subLocality2" : "",
     "subLocality3" : "",
     "route" : "",
     "geometry" : {
         "lat" : 17.43143576387407,
        "lng" : 78.464432457672046
      },
         "formatted_address" : "kath..."
      }    
}});

Upvotes: 1

Related Questions