MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB:aggiorna un campo di un elemento nell'array con la corrispondenza di un altro campo di quell'elemento

Normalmente lo faresti usando l'operatore posizionale $ , come descritto nella risposta a questa domanda:

Campo di aggiornamento nell'array di elementi esatto in MongoDB

Sfortunatamente, in questo momento l'operatore posizionale supporta solo un livello di array in profondità di corrispondenza.

Esiste un ticket JIRA per il tipo di comportamento che desideri:https://jira.mongodb .org/browse/SERVER-831

Nel caso tu possa fare Switches in un oggetto invece, potresti fare qualcosa del genere:

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