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

¿Cómo escribir una consulta de actualización en mongodb para una matriz profundamente anidada?

Pruebe el positional $ operador en su actualización que actúa como un marcador de posición para el primer elemento que coincide con el documento de consulta, y cuando lo use, asegúrese de que las cards El campo de matriz debe aparecer como parte del documento de consulta. En su caso, le gustaría agregar una card documento en las 'cards' matriz, pero solo si el cardId no 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) { ... });