¿Cómo actualizo parcialmente un objeto en MongoDB para que el nuevo objeto se superponga / combine con el existente?

Dado este documento guardado en MongoDB

<code>{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2",
        param3 : "val3"
   }
}
</code>

Un objeto con nueva información sobreparam2 yparam3 del mundo exterior necesita ser salvado

<code>var new_info = {
    param2 : "val2_new",
    param3 : "val3_new"
};
</code>

Quiero fusionar / superponer los nuevos campos sobre el estado existente del objeto para que no se elimine param1

Haciendo esto

<code>db.collection.update(  { _id:...} , { $set: { some_key : new_info  } } 
</code>

Will conducirá a que MongoDB haga exactamente lo que se le pidió, y establece some_key en ese valor. Sustituyendo a la antigua.

<code>{
   _id : ...,
   some_key: { 
      param2 : "val2_new",
      param3 : "val3_new"
   }
}
</code>

¿Cuál es la forma de que MongoDB actualice solo los campos nuevos (sin indicarlos uno por uno explícitamente)? para obtener esto:

<code>{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2_new",
        param3 : "val3_new"
   }
}
</code>

Estoy usando el cliente Java, pero cualquier ejemplo será apreciado.

Respuestas a la pregunta(13)

Su respuesta a la pregunta