Dado este documento guardado en MongoDB
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2",
param3 : "val3"
}
}
Es necesario guardar un objeto con nueva información sobre param2
y param3
desde el mundo exterior.
var new_info = {
param2 : "val2_new",
param3 : "val3_new"
};
Quiero fusionar / superponer los nuevos campos sobre el estado existente del objeto para que no se elimine param1
Haciendo esto
db.collection.update( { _id:...} , { $set: { some_key : new_info } }
Conducirá a que MongoDB esté haciendo exactamente lo que se le pidió, y establece some_key en ese valor. reemplazando el viejo.
{
_id : ...,
some_key: {
param2 : "val2_new",
param3 : "val3_new"
}
}
¿Cuál es la forma de que MongoDB actualice solo los campos nuevos (sin indicarlos uno por uno explícitamente)? para obtener esto:
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2_new",
param3 : "val3_new"
}
}
Estoy usando el cliente Java, pero cualquier ejemplo será apreciado