Du ville normalt gøre dette ved at bruge positionsoperatoren $
, som beskrevet i svaret på dette spørgsmål:
Opdater felt i nøjagtigt elementarray i MongoDB
Desværre understøtter positionsoperatoren lige nu kun ét array-niveau dybt af matchning.
Der er en JIRA-billet til den slags adfærd, du ønsker:https://jira.mongodb .org/browse/SERVER-831
Hvis du kan foretage Switches
ind i et objekt i stedet for, kan du gøre noget som dette:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)