यह अच्छी तरह से प्रलेखित नहीं है, लेकिन सरणी फ़ील्ड में हेरफेर करते समय आपको यह सुनिश्चित करने की ज़रूरत है कि आप मोंगोज़ के फ़ील्ड परिवर्तन पहचान को ट्रिगर कर रहे हैं ताकि यह जान सके कि सरणी को संशोधित किया गया है और इसे सहेजने की आवश्यकता है।
वर्गाकार कोष्ठकों में इसकी अनुक्रमणिका के माध्यम से एक सरणी तत्व को सीधे सेट करना इसे संशोधित के रूप में चिह्नित नहीं करता है, इसलिए आपको markModified
:
user.emails[0] = email1;
user.markModified('emails');
या आप इसे एक बार में set
का उपयोग करके कर सकते हैं।
नेवला सरणी की विधि:
user.emails.set(0, email1);
संपूर्ण सरणी फ़ील्ड को ओवरराइट करना भी इसे ट्रिगर करता है, यही कारण है कि यह आपके लिए काम करता है:
user.emails = [email1, email2];
साथ ही:
user.emails = [email1];
user.emails[1] = email2;
जिसका मतलब है कि यह भी काम करता है:
user.emails = [];
user.emails[0] = email1;
user.emails[1] = email2;