Given this document saved in MongoDB
{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2",
        param3 : "val3"
   }
}
An object with new information on param2 and param3 from the outside world needs to be saved
var new_info = {
    param2 : "val2_new",
    param3 : "val3_new"
};
I want to merge / overlay the new fields over the existing state of the object so that param1 doesn't get removed
Doing this
db.collection.update(  { _id:...} , { $set: { some_key : new_info  } } 
Will lead to MongoDB is doing exactly as it was asked, and sets some_key to that value. replacing the old one.
{
   _id : ...,
   some_key: { 
      param2 : "val2_new",
      param3 : "val3_new"
   }
}
What is the way to have MongoDB update only new fields (without stating them one by one explicitly)? to get this:
{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2_new",
        param3 : "val3_new"
   }
}
I'm using the Java client, but any example will be appreciated
 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    