sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:Uppdatera ett fält för ett objekt i array med att matcha ett annat fält för det objektet

Du skulle normalt göra detta med positionsoperatorn $ , som beskrivs i svaret på denna fråga:

Uppdatera fält i exakt elementarray i MongoDB

Tyvärr stöder positionsoperatorn just nu bara en arraynivå djup av matchning.

Det finns en JIRA-biljett för den sortens beteende du vill ha:https://jira.mongodb .org/browse/SERVER-831

Om du kan göra Switches i ett objekt istället, kan du göra något så här:

db.colection.update(
    {
        _id: ObjectId("561ad881755a021904c00fb5"),
        "Switch.Ports.PortNumber": 5
    }, 
    {
        $set: {
            "Switch.Ports.$.Status": "Empty"
        }
    }
)


  1. Komma igång med CouchDB

  2. Uppdatera fält med ett annat fälts värde i dokumentet

  3. Fråga och infoga med ett enda kommando

  4. Elastisk sökning med MongoDB:Söka i PDF-filer