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