Vous feriez normalement cela en utilisant l'opérateur positionnel $
, comme décrit dans la réponse à cette question :
Mettre à jour le champ dans le tableau d'éléments exact dans MongoDB
Malheureusement, à l'heure actuelle, l'opérateur positionnel ne prend en charge qu'un seul niveau de tableau de correspondance.
Il existe un ticket JIRA pour le type de comportement que vous souhaitez :https://jira.mongodb .org/browse/SERVER-831
Au cas où vous pourriez faire des Switches
dans un objet à la place, vous pourriez faire quelque chose comme ceci :
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)