MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB :mettre à jour un champ d'un élément du tableau avec un autre champ correspondant à cet élément

Vous feriez normalement cela en utilisant l'opérateur positionnel $ , comme décrit dans la réponse à cette question :

Mettre à jour le champ dans le tableau d'éléments exact dans MongoDB

Malheureusement, à l'heure actuelle, l'opérateur positionnel ne prend en charge qu'un seul niveau de tableau de correspondance.

Il existe un ticket JIRA pour le type de comportement que vous souhaitez :https://jira.mongodb .org/browse/SERVER-831

Au cas où vous pourriez faire des Switches dans un objet à la place, vous pourriez faire quelque chose comme ceci :

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