Supongamos que tenemos la siguiente colección, sobre la que tengo algunas preguntas:
{
"_id" : ObjectId("4faaba123412d654fe83hg876"),
"user_id" : 123456,
"total" : 100,
"items" : [
{
"item_name" : "my_item_one",
"price" : 20
},
{
"item_name" : "my_item_two",
"price" : 50
},
{
"item_name" : "my_item_three",
"price" : 30
}
]
}
1 - Quiero aumentar el precio de "item_name": "my_item_two" y, si no existe , debería adjuntarse a la matriz "items".
2 - ¿Cómo puedo actualizar dos campos al mismo tiempo? Por ejemplo, aumente el precio de "my_item_three" y al mismo tiempo aumente el "total" (con el mismo valor).
Prefiero hacer esto en el lado de MongoDB, de lo contrario tengo que cargar el documento en el lado del cliente (Python) y construir el documento actualizado y reemplazarlo con el existente en MongoDB.
ACTUALIZAR Esto es lo que he intentado y funciona bien SI EL Objeto existe :
db.test_invoice.update({user_id : 123456 , "items.item_name":"my_item_one"} , {$inc: {"items.$.price": 10}})
Pero si la clave no existe, no hace nada. Además, solo actualiza el objeto anidado. Con este comando no hay manera de actualizar el campo "total" también.