U zou dit normaal gesproken doen met de positionele operator $
, zoals beschreven in het antwoord op deze vraag:
Update veld in exacte elementarray in MongoDB
Helaas ondersteunt de positionele operator op dit moment slechts één arrayniveau diep van matching.
Er is een JIRA-ticket voor het soort gedrag dat je wilt:https://jira.mongodb .org/browse/SERVER-831
Voor het geval je Switches
kunt maken in plaats daarvan in een object, zou je zoiets als dit kunnen doen:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)