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