Probeer de positional $
operator in uw update die fungeert als een tijdelijke aanduiding voor het eerste element dat overeenkomt met het querydocument, en wanneer u het gebruikt, zorg er dan voor dat de cards
matrixveld moet verschijnen als onderdeel van het querydocument. In jouw geval wil je een card
. toevoegen document in de 'cards'
array, maar alleen als de cardId
bestaat niet:
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) { ... });