मैं एक दस्तावेज़ के _id MongoDB को अपडेट करना चाहता हूं। मुझे पता है कि यह वास्तव में एक अच्छा pratice नहीं है। लेकिन कुछ तकनीकी कारणों से, मुझे इसे अपडेट करने की आवश्यकता है। लेकिन अगर मैं इसे अद्यतन करने का प्रयास करता हूं तो मेरे पास है:एक मोंगोडीबी दस्तावेज़ के _id को कैसे अपडेट करें?
> db.clients.update({'_id':ObjectId("4cc45467c55f4d2d2a000002")}, {'$set':{'_id':ObjectId("4c8a331bda76c559ef000004")}});
Mod on _id not allowed
और अद्यतन नहीं किया गया है। मैं वास्तव में इसे कैसे अपडेट कर सकता हूं?
इस के साथ एक मजेदार समस्या तब दिखाई देती है जब उस दस्तावेज़ के कुछ फ़ील्ड में एक अद्वितीय अनुक्रमणिका हो। उस स्थिति में, आपका उदाहरण विफल हो जाएगा क्योंकि किसी दस्तावेज़ को एक अद्वितीय अनुक्रमित फ़ील्ड में डुप्लिकेट मान के साथ सम्मिलित नहीं किया जा सकता है। आप पहले इसे हटाकर इसे ठीक कर सकते हैं, लेकिन यह एक बुरा विचार है क्योंकि यदि आपका सम्मिलन किसी कारण से विफल रहता है तो आपका डेटा अब खो गया है। आपको इसके बजाय अपना इंडेक्स ड्रॉप करना होगा, काम करना होगा, फिर इंडेक्स को पुनर्स्थापित करना होगा। – skelly
अच्छा बिंदु @skelly! मैं इसी तरह की समस्याओं के बारे में सोचने लगा और 2 घंटे पहले अपनी ताजा टिप्पणी देखी। तो इस संशोधित आईडी परेशानी को उपयोगकर्ता को आईडी चुनने की अनुमति देकर आंतरिक समस्या के रूप में माना जाता है? – RayLuo
यदि आपको 'डालने' रेखा में 'डुप्लिकेट कुंजी त्रुटि' मिलती है और @skelly की समस्या के बारे में चिंतित नहीं हैं, तो सबसे आसान समाधान केवल 'निकालना' पंक्ति को कॉल करना है और फिर 'डालने' पंक्ति को कॉल करना है। 'दस्तावेज़' को पहले से ही आपकी स्क्रीन पर मुद्रित किया जाना चाहिए ताकि सरल दस्तावेजों के लिए, डालने में विफल होने पर भी सबसे खराब मामला पुनर्प्राप्त करना आसान हो। – philfreo