डिफ़ॉल्ट क्यों है _id
एक 24 वर्ण हेक्स स्ट्रिंग?
प्राथमिक कुंजी के रूप में उत्पन्न डिफ़ॉल्ट विशिष्ट पहचानकर्ता (_id
) MongoDB दस्तावेज़ के लिए एक ObjectId
है . यह एक 12 बाइट बाइनरी मान है जिसे अक्सर 24 वर्ण हेक्स स्ट्रिंग के रूप में दर्शाया जाता है, और MongoDB द्वारा समर्थित मानक फ़ील्ड प्रकारों में से एक बीएसओएन विनिर्देश
।
ऑब्जेक्ट आईडी के 12 बाइट्स का निर्माण निम्न का उपयोग करके किया जाता है:
- एक 4 बाइट मान जो यूनिक्स युग के बाद के सेकंडों को दर्शाता है
- एक 3 बाइट मशीन पहचानकर्ता
- एक 2 बाइट प्रोसेस आईडी
- एक 3 बाइट काउंटर (यादृच्छिक मान से शुरू)
ऑब्जेक्ट आईडी का क्या महत्व है?
ObjectIds (या GUID के अनुसार जेनरेट किए गए समान पहचानकर्ता फॉर्मूला) अद्वितीय पहचानकर्ताओं को एक वितरित सिस्टम में स्वतंत्र रूप से उत्पन्न करने की अनुमति देता है।
स्वतंत्र रूप से एक अद्वितीय आईडी उत्पन्न करने की क्षमता बहुत महत्वपूर्ण हो जाती है क्योंकि आप कई एप्लिकेशन सर्वर (या शायद शार्ड क्लस्टर ) आप अनुक्रम काउंटर की तरह एक केंद्रीय समन्वय बाधा नहीं चाहते हैं (उदाहरण के लिए आपके पास ऑटो-इंक्रिमेंटिंग प्राथमिक कुंजी के लिए हो सकता है), और आप जोखिम के बिना नए दस्तावेज़ सम्मिलित करना चाहेंगे कि एक नया पहचानकर्ता बन जाएगा डुप्लिकेट।
एक ObjectId आमतौर पर आपके MongoDB क्लाइंट ड्राइवर
द्वारा जेनरेट किया जाता है , लेकिन MongoDB सर्वर पर भी उत्पन्न किया जा सकता है यदि आपका क्लाइंट ड्राइवर या एप्लिकेशन कोड या पहले से कोई _id
नहीं जोड़ा है फ़ील्ड.
क्या मुझे डिफ़ॉल्ट ObjectId का उपयोग करना होगा?
नहीं। यदि आपके पास उपयोग करने के लिए अधिक उपयुक्त विशिष्ट पहचानकर्ता है, तो आप हमेशा _id
के लिए अपना स्वयं का मान प्रदान कर सकते हैं . यह या तो एकल मान हो सकता है या एकाधिक फ़ील्ड का उपयोग करके मिश्रित मान हो सकता है।
_id
. पर मुख्य बाधाएं मान यह हैं कि उन्हें संग्रह के लिए अद्वितीय होना चाहिए और आप _id
. को अपडेट या हटा नहीं सकते हैं किसी मौजूदा दस्तावेज़ के लिए।