MongoDB - Actualizar objetos en la matriz de un documento (actualización anidada)

Supongamos que tenemos la siguiente colección, que tengo algunas preguntas sobre:

<code>{
    "_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
            }
    ]
}
</code>

1 - Quiero aumentar el precio de "item_name": "my_item_two"y si no existe, debe ser añadido a la matriz de "elementos".

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 probado y funciona bien.Si el objeto existe :

<code>db.test_invoice.update({user_id : 123456 , "items.item_name":"my_item_one"} , {$inc: {"items.$.price": 10}})
</code>

Pero si la clave no existe no hace nada. También solo actualiza el objeto anidado. No hay forma con este comando de actualizar el campo "total" también.

Respuestas a la pregunta(2)

Su respuesta a la pregunta