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

Como escrever uma consulta de atualização no mongodb para uma matriz profundamente aninhada?


Experimente o positional $ operador em sua atualização que atua como um espaço reservado para o primeiro elemento que corresponde ao documento de consulta e, ao usá-lo, certifique-se de que os cards campo array deve aparecer como parte do documento de consulta. No seu caso, você gostaria de adicionar um card documento nos 'cards' array, mas apenas se o cardId não existe:
var query = {        
    "cardInfo.cards.cardId": { "$nin": ["somecardid"] }
};
var update = {        
    "$push": {
        "cardInfo": { "customerId": "25934285649875" },
        "cardInfo.$.cards": {
            cardId: "somecardid",
            cardType: "type",
            createdAt: new Date().toISOString(),
            isActive: true
        }
    }
};

Customer.update(query, update, function (err, result) { ... });