Vyzkoušejte positional $
operátor ve vaší aktualizaci, který funguje jako zástupný symbol pro první prvek, který odpovídá dokumentu dotazu, a když jej používáte, ujistěte se, že cards
pole pole se musí objevit jako součást dokumentu dotazu. Ve vašem případě byste chtěli přidat card
dokument do 'cards'
pole, ale pouze pokud cardId
neexistuje:
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) { ... });