Hãy thử positional $
trong bản cập nhật của bạn hoạt động như một trình giữ chỗ cho phần tử đầu tiên khớp với tài liệu truy vấn và khi bạn sử dụng nó, hãy đảm bảo các thẻ cards
trường mảng phải xuất hiện như một phần của tài liệu truy vấn. Trong trường hợp của bạn, bạn muốn thêm thẻ cards
tài liệu vào 'cards'
mảng, nhưng chỉ khi cardId
không tồn tại:
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) { ... });