Coba positional $
operator di pembaruan Anda yang bertindak sebagai pengganti untuk elemen pertama yang cocok dengan dokumen kueri, dan ketika Anda menggunakannya pastikan cards
bidang array harus muncul sebagai bagian dari dokumen kueri. Dalam kasus Anda, Anda ingin menambahkan cards
dokumen ke dalam 'cards'
array, tetapi hanya jika cardId
tidak ada:
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) { ... });