Prøv positional $
operator i din opdatering, som fungerer som en pladsholder for det første element, der matcher forespørgselsdokumentet, og når du bruger det, skal du sørge for, at cards
matrixfeltet skal vises som en del af forespørgselsdokumentet. I dit tilfælde vil du gerne tilføje et card
dokument i 'cards'
array, men kun hvis cardId
eksisterer ikke:
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) { ... });