Probieren Sie den positional $ aus
Operator in Ihrem Update, der als Platzhalter für das erste Element fungiert, das mit dem Abfragedokument übereinstimmt, und wenn Sie ihn verwenden, stellen Sie sicher, dass die cards Array-Feld muss als Teil des Abfragedokuments erscheinen. In Ihrem Fall möchten Sie eine card hinzufügen Dokument in die 'cards' Array, aber nur wenn die cardId existiert nicht:
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) { ... });