Normalerweise würden Sie dies mit dem Positionsoperator $
tun , wie in der Antwort auf diese Frage beschrieben:
Feld im Array exakter Elemente in MongoDB aktualisieren
Leider unterstützt der Positionsoperator derzeit nur eine Array-Level-Tiefe des Abgleichs.
Es gibt ein JIRA-Ticket für das gewünschte Verhalten:https://jira.mongodb .org/browse/SERVER-831
Falls Sie Switches
machen können in ein Objekt, könnten Sie stattdessen so etwas tun:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)