पहले मामले में डुप्लिकेट इंडेक्स त्रुटि दिखाने का कोई कारण नहीं है क्योंकि यह केवल _id
को अपडेट करने का प्रयास कर रहा है और name
समान मान वाले समान रिकॉर्ड के फ़ील्ड।
अगर आप कोशिश करेंगे
db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});
आपको त्रुटि मिलेगी, क्योंकि क्वेरी अलग-अलग _id
. के साथ रिकॉर्ड को अपडेट करने का प्रयास कर रही है कुछ मौजूदा _id
. के साथ मूल्य।
दूसरे मामले में, आपने पहले name
. के साथ एक रिकॉर्ड बनाया फ़ील्ड और फिर आप उसी नाम को दूसरे रिकॉर्ड में अपडेट करने का प्रयास कर रहे हैं, जो त्रुटि देगा name
अद्वितीय अनुक्रमणिका है।
संपादित करें :-
अगर आप कोशिश कर रहे हैं
db.foo.insert({ _id: 'doe123', name: 'John Doe'});
आपको त्रुटि देगा, क्योंकि इस मामले में आप एक रिकॉर्ड डालने का प्रयास कर रहे हैं जो पहले से मौजूद है यानी _id
अद्वितीय है और आप उसी _id
. के साथ एक और रिकॉर्ड बनाने का प्रयास कर रहे हैं मूल्य।