MongoDB

MongoDB ऑब्जेक्ट ID और उनका उपयोग

Spread the love

विषय-सूची

MongoDB ObjectId संरचना को समझना

MongoDB में, ObjectId एक 12-बाइट का अद्वितीय पहचानकर्ता है जो दस्तावेज़ों के प्रबंधन के लिए महत्वपूर्ण है। इसका चतुर डिज़ाइन वितरित सिस्टम में भी वैश्विक विशिष्टता सुनिश्चित करता है। आइए इसके घटकों को समझते हैं:

  • समय-मुद्रा (4 बाइट्स): यूनिक्स युग (1 जनवरी, 1970, 00:00:00 UTC) से सेकंड की संख्या का प्रतिनिधित्व करता है। यह कुशल अस्थायी क्वेरी और क्रमबद्धता की सुविधा प्रदान करता है।
  • मशीन पहचानकर्ता (3 बाइट्स): ObjectId उत्पन्न करने वाली मशीन को विशिष्ट रूप से पहचानता है। यह विभिन्न सर्वरों पर टकराव को रोकता है।
  • प्रक्रिया ID (2 बाइट्स): मशीन पर चल रही प्रक्रिया को पहचानता है। यह एक ही मशीन के भीतर विशिष्टता को और परिष्कृत करता है।
  • काउंटर (3 बाइट्स): एक बढ़ता हुआ काउंटर जो एक ही प्रक्रिया और मशीन के भीतर एक ही सेकंड में भी विशिष्टता सुनिश्चित करता है। यह उच्च-मात्रा सम्मिलन परिदृश्यों को संभालता है।

यह परिष्कृत संरचना यह गारंटी देती है कि ObjectId न केवल अद्वितीय हैं, बल्कि निर्माण समय के आधार पर कुशल क्रमबद्धता भी प्रदान करते हैं, जिससे विभिन्न डेटाबेस संचालन सुव्यवस्थित होते हैं।

ObjectId बनाम $oid: प्रमुख अंतर और उपयोग

ObjectId और $oid शब्द अक्सर भ्रमित होते हैं, लेकिन वे अलग-अलग अवधारणाओं का प्रतिनिधित्व करते हैं:

  • ObjectId: यह आपके एप्लिकेशन कोड के भीतर उपयोग किए जाने वाले डेटा प्रकार को संदर्भित करता है (जैसे, PyMongo में Python का ObjectId, या Mongoose में JavaScript का ObjectId)। यह अद्वितीय पहचानकर्ता का इन-मेमोरी प्रतिनिधित्व है।
  • $oid: यह एक BSON प्रकार ऑपरेटर है जिसका उपयोग विशेष रूप से MongoDB क्वेरी दस्तावेज़ों के भीतर किया जाता है। यह वह तरीका है जिससे आप डेटाबेस क्वेरी करते समय ObjectId का प्रतिनिधित्व करते हैं। आप सीधे $oid मान नहीं बनाते हैं; आपका ड्राइवर आपके एप्लिकेशन के ObjectId से क्वेरी में $oid प्रतिनिधित्व में रूपांतरण को संभालता है।

इसे इस तरह समझें: ObjectId आपके एप्लिकेशन का आंतरिक प्रतिनिधित्व है, जबकि $oid आपके MongoDB सर्वर को आपकी क्वेरी को समझने के लिए आवश्यक अनुवाद है।

ObjectIds के साथ कार्य करना: व्यावहारिक उदाहरण

आइए देखें कि लोकप्रिय MongoDB ड्राइवरों का उपयोग करके ObjectIds के साथ दस्तावेज़ कैसे सम्मिलित करें:

Python (PyMongo):


from pymongo import MongoClient, ObjectId

client = MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]

new_document = {
    "_id": ObjectId(),
    "name": "Example Document"
}

inserted_id = collection.insert_one(new_document).inserted_id
print(inserted_id)

Node.js (Mongoose):


const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/mydatabase');

const mySchema = new mongoose.Schema({
  name: String
});

const MyModel = mongoose.model('MyModel', mySchema);

const newDocument = new MyModel({ name: 'Example Document' });
newDocument.save()
  .then(doc => console.log(doc._id))
  .catch(err => console.error(err));

ध्यान दें कि ड्राइवर स्वचालित रूप से BSON में रूपांतरण का प्रबंधन करते हैं। आप _id: ObjectId() परिभाषित करते हैं, और ड्राइवर बाकी को संभालता है।

उपयोगी ObjectId विधियाँ

अधिकांश ड्राइवर ObjectIds में हेरफेर करने के लिए सहायक विधियाँ प्रदान करते हैं:

  • getTimestamp(): ObjectId के निर्माण समय-मुद्रा का प्रतिनिधित्व करने वाली एक दिनांक-समय ऑब्जेक्ट देता है।
  • toString(): ObjectId को उसके हेक्साडेसिमल स्ट्रिंग प्रतिनिधित्व में परिवर्तित करता है (लॉगिंग और प्रदर्शन के लिए उपयोगी)।
  • equals(): समानता के लिए दो ObjectIds की तुलना करता है।

निष्कर्ष

प्रतीत होने पर समान, ObjectId और $oid MongoDB में अलग-अलग भूमिकाएँ निभाते हैं। इस अंतर को समझना कुशल डेटाबेस संपर्क के लिए महत्वपूर्ण है। आपका ड्राइवर आपके एप्लिकेशन के ObjectId और क्वेरी में उपयोग किए जाने वाले $oid के बीच आवश्यक अनुवाद को संभालता है, जिससे आप निम्न-स्तरीय BSON विवरणों के बजाय एप्लिकेशन तर्क पर ध्यान केंद्रित कर सकते हैं।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *