Considere estos datos¿Cómo se alterna un campo booleano en un elemento Array en MongoDB?
{
"_id" : ...,
"array" : [
{ "name" : "value1","flag" : true } ,
{ "name" : "value2","flag" : false }
]
}
me gustaría cambiar el segundo elemento de la matriz (de falso a verdadero)
Sé que puedo actualizar un elemento concreto utilizando la gran utilidad del operador posicional $ como esto:
db.myCollection.update(
{'array.name':'value2'},
{
$set: {
'array.$.flag':true
}
},false,true);
¿Pero hay una manera de usar el operador posicional $ también para la configuración del valor?
p. Ej. ¿Me gusta esto?
db.myCollection.update(
{'array.name':'value2'},
{
$set: {
'array.$.flag':'!array.$.flag' //<--
}
},false,true);
Gracias, me temo que es así, entonces eso significa que no va a ser transaccional, ¿verdad? –
@EranMedan: sí, pero hay una solución. Ver respuesta actualizada. –