Wypróbuj positional $
w aktualizacji, który działa jako symbol zastępczy dla pierwszego elementu, który pasuje do dokumentu zapytania, a kiedy go używasz, upewnij się, że cards
pole tablicy musi pojawić się jako część dokumentu zapytania. W twoim przypadku chcesz dodać card
dokument do 'cards'
tablica, ale tylko wtedy, gdy cardId
nie istnieje:
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) { ... });