Digamos que tengo un documento como este:
{ _id: "12345", hash_field: { "foo": "bar" } } Y en algún momento, sin saber cuál es el valor del hash_field de este documento, necesito agregarle más pares clave/valor mientras dejo intacto el actual. Estoy buscando una manera de hacer esto sin borrar los datos existentes y sin tener que hacer varias actualizaciones anidadas.
db.myCollection.updateOne({_id:"12345"}, {'$set': { hash_field: { "key1": "value1", "key2": "value2" } } }) Lo anterior borrará el {"foo":"bar"} .
Sé que puedo hacer dos llamadas $set separadas con '$set': {"hash_field.key1": "value1"} y '$set': {"hash_field.key2": "value2"} pero estoy buscando una forma de hacer esto en una actualización de mongo. ¿Posible?
Usa $mergeObjects .
db.collection.update({ _id: "12345" }, [ { "$set": { hash_field: { $mergeObjects: [ "$hash_field", { "key1": "value1", "key2": "value2" } ] } } } ])