positional $ आज़माएं
आपके अपडेट में ऑपरेटर जो क्वेरी दस्तावेज़ से मेल खाने वाले पहले तत्व के लिए प्लेसहोल्डर के रूप में कार्य करता है, और जब आप इसका उपयोग करते हैं तो सुनिश्चित करें कि cards सरणी फ़ील्ड को क्वेरी दस्तावेज़ के भाग के रूप में प्रकट होना चाहिए। आपके मामले में आप एक cards जोड़ना चाहेंगे 'cards' . में दस्तावेज़ सरणी, लेकिन केवल अगर cardId मौजूद नहीं है:
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) { ... });