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