Anda biasanya melakukan ini menggunakan operator posisi $
, seperti yang dijelaskan dalam jawaban atas pertanyaan ini:
Perbarui bidang dalam array elemen persis di MongoDB
Sayangnya, saat ini operator posisi hanya mendukung satu tingkat pencocokan dalam array.
Ada tiket JIRA untuk jenis perilaku yang Anda inginkan:https://jira.mongodb .org/browse/SERVER-831
Jika Anda dapat membuat Switches
menjadi objek sebagai gantinya, Anda bisa melakukan sesuatu seperti ini:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)