Du skulle normalt göra detta med positionsoperatorn $
, som beskrivs i svaret på denna fråga:
Uppdatera fält i exakt elementarray i MongoDB
Tyvärr stöder positionsoperatorn just nu bara en arraynivå djup av matchning.
Det finns en JIRA-biljett för den sortens beteende du vill ha:https://jira.mongodb .org/browse/SERVER-831
Om du kan göra Switches
i ett objekt istället, kan du göra något så här:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)