sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:actualice un campo de un elemento en una matriz que coincida con otro campo de ese elemento

Normalmente haría esto usando el operador posicional $ , como se describe en la respuesta a esta pregunta:

Actualizar campo en matriz de elementos exactos en MongoDB

Desafortunadamente, en este momento el operador posicional solo admite un nivel de matriz de coincidencia.

Hay un ticket de JIRA para el tipo de comportamiento que desea:https://jira.mongodb .org/browse/SERVER-831

En caso de que pueda hacer Switches en un objeto en su lugar, podría hacer algo como esto:

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