Normalmente lo faresti usando l'operatore posizionale $
, come descritto nella risposta a questa domanda:
Campo di aggiornamento nell'array di elementi esatto in MongoDB
Sfortunatamente, in questo momento l'operatore posizionale supporta solo un livello di array in profondità di corrispondenza.
Esiste un ticket JIRA per il tipo di comportamento che desideri:https://jira.mongodb .org/browse/SERVER-831
Nel caso tu possa fare Switches
in un oggetto invece, potresti fare qualcosa del genere:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)