त्रुटि संदेश कह रहा है कि null
. के साथ पहले से ही एक रिकॉर्ड है ईमेल के रूप में। दूसरे शब्दों में, आपके पास पहले से ही बिना ईमेल पते वाला एक उपयोगकर्ता है।
इसके लिए प्रासंगिक दस्तावेज:
<ब्लॉकक्वॉट>यदि किसी दस्तावेज़ में अद्वितीय अनुक्रमणिका में अनुक्रमित फ़ील्ड के लिए कोई मान नहीं है, तो अनुक्रमणिका इस दस्तावेज़ के लिए एक शून्य मान संग्रहीत करेगी। अद्वितीय बाधा के कारण, MongoDB केवल एक दस्तावेज़ की अनुमति देगा जिसमें अनुक्रमित फ़ील्ड का अभाव है। यदि अनुक्रमित फ़ील्ड के लिए मान के बिना एक से अधिक दस्तावेज़ हैं या अनुक्रमित फ़ील्ड अनुपलब्ध है, तो अनुक्रमणिका बिल्ड डुप्लिकेट कुंजी त्रुटि के साथ विफल हो जाएगा।
अद्वितीय इंडेक्स से इन शून्य मानों को फ़िल्टर करने और त्रुटि से बचने के लिए आप स्पैस इंडेक्स के साथ अद्वितीय बाधा को जोड़ सकते हैं।
अद्वितीय अनुक्रमणिका
<ब्लॉकक्वॉट>विरल अनुक्रमणिका में केवल उन दस्तावेज़ों के लिए प्रविष्टियाँ होती हैं जिनमें अनुक्रमित फ़ील्ड होता है, भले ही अनुक्रमणिका फ़ील्ड में शून्य मान हो।
दूसरे शब्दों में, एक विरल अनुक्रमणिका कई दस्तावेज़ों के साथ ठीक है जिनमें सभी null
. हैं मान।
विरल अनुक्रमणिका
टिप्पणियों से:
आपकी त्रुटि कहती है कि कुंजी का नाम mydb.users.$email_1
. है जिससे मुझे संदेह होता है कि आपके पास users.email
. दोनों पर एक अनुक्रमणिका है और users.local.email
(पूर्व पुराना है और इस समय अप्रयुक्त है)। Mongoose मॉडल से किसी फ़ील्ड को निकालने से डेटाबेस प्रभावित नहीं होता है। mydb.users.getIndexes()
. से जांचें यदि ऐसा है और अवांछित अनुक्रमणिका को mydb.users.dropIndex(<name>)
के साथ मैन्युअल रूप से हटा दें ।