Обикновено бихте направили това с помощта на позиционния оператор $
, както е описано в отговора на този въпрос:
Поле за актуализация в масив с точен елемент в MongoDB
За съжаление в момента позиционният оператор поддържа само едно ниво на масив на съвпадение.
Има билет за JIRA за поведението, което искате:https://jira.mongodb .org/browse/SERVER-831
В случай, че можете да правите Switches
в обект вместо това можете да направите нещо подобно:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)