¿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.