Normalmente haría esto usando el operador posicional $
, como se describe en la respuesta a esta pregunta:
Actualizar campo en matriz de elementos exactos en MongoDB
Desafortunadamente, en este momento el operador posicional solo admite un nivel de matriz de coincidencia.
Hay un ticket de JIRA para el tipo de comportamiento que desea:https://jira.mongodb .org/browse/SERVER-831
En caso de que pueda hacer Switches
en un objeto en su lugar, podría hacer algo como esto:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)