MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come scrivere una query di aggiornamento in mongodb per un array profondamente nidificato?

Prova positional $ operatore nel tuo aggiornamento che funge da segnaposto per il primo elemento che corrisponde al documento della query e quando lo usi assicurati che le cards campo matrice deve apparire come parte del documento della query. Nel tuo caso vorresti aggiungere una card documento nel 'cards' array, ma solo se cardId non esiste:

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) { ... });