Prova positional $
operatorn i din uppdatering som fungerar som en platshållare för det första elementet som matchar frågedokumentet, och när du använder det se till att cards
arrayfältet måste visas som en del av frågedokumentet. I ditt fall vill du lägga till ett card
dokument till 'cards'
array, men bara om cardId
finns inte:
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) { ... });