MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:Atualize um campo de um item na matriz com outro campo desse item correspondente


Você normalmente faria isso usando o operador posicional $ , conforme descrito na resposta a esta pergunta:

Atualizar campo na matriz de elementos exata no MongoDB

Infelizmente, no momento, o operador posicional suporta apenas um nível de matriz de correspondência.

Há um tíquete JIRA para o tipo de comportamento que você deseja:https://jira.mongodb .org/browse/SERVER-831

Caso você possa fazer Switches em um objeto, você poderia fazer algo assim:
db.colection.update(
    {
        _id: ObjectId("561ad881755a021904c00fb5"),
        "Switch.Ports.PortNumber": 5
    }, 
    {
        $set: {
            "Switch.Ports.$.Status": "Empty"
        }
    }
)