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