MongoDB में findOne() के साथ ObjectId द्वारा एकल डॉक्यूमेंट पुनर्प्राप्त करना
findOne() मेथड क्वेरी से मेल खाने वाला पहला डॉक्यूमेंट लौटाता है। _id फील्ड पर ObjectId के साथ उपयोग किए जाने पर, यह कुशलता से एकल अद्वितीय डॉक्यूमेंट पुनर्प्राप्त करता है।
नमूना डेटा बनाना
> db.findOneWorkingDemo.insertOne({"ClientId":1,"ClientName":"Larry","ClientAge":26});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7c1716d78f205348bc64d") }
> db.findOneWorkingDemo.insertOne({"ClientId":2,"ClientName":"Chris","ClientAge":28});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7c17d6d78f205348bc64e") }
> db.findOneWorkingDemo.insertOne({"ClientId":3,"ClientName":"Robert","ClientAge":34});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7c1896d78f205348bc64f") }
सभी डॉक्यूमेंट्स देखना
> db.findOneWorkingDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd7c1716d78f205348bc64d"), "ClientId" : 1, "ClientName" : "Larry", "ClientAge" : 26 }
{ "_id" : ObjectId("5cd7c17d6d78f205348bc64e"), "ClientId" : 2, "ClientName" : "Chris", "ClientAge" : 28 }
{ "_id" : ObjectId("5cd7c1896d78f205348bc64f"), "ClientId" : 3, "ClientName" : "Robert", "ClientAge" : 34 }
ObjectId के साथ findOne()
> db.findOneWorkingDemo.findOne({ "_id": ObjectId("5cd7c17d6d78f205348bc64e") });
आउटपुट:
{ "_id" : ObjectId("5cd7c17d6d78f205348bc64e"), "ClientId" : 2, "ClientName" : "Chris", "ClientAge" : 28 }
findOne() बनाम find()
| मेथड | रिटर्न्स | उपयोग करें जब |
|---|---|---|
findOne(query) | एकल डॉक्यूमेंट या null | आप एक डॉक्यूमेंट की उम्मीद करते हैं (उदाहरण के लिए, _id द्वारा) |
find(query) | कर्सर (पुनरावृत्त करने योग्य) | आप मल्टीपल परिणामों की उम्मीद करते हैं या पुनरावृति की आवश्यकता है |
find(query).limit(1) | कर्सर (अधिकतम 1 डॉक्यूमेंट) | कर्सर नियंत्रण की आवश्यकता होने पर findOne() का विकल्प |
ObjectId निर्माण
- शेल में:
ObjectId("hexString")याnew ObjectId("hexString")। - ड्राइवर्स में: भाषा-विशिष्ट कंस्ट्रक्टर का उपयोग करें (उदाहरण के लिए, Node.js:
new ObjectId("..."), Python:ObjectId("..."))। - ObjectId में एक एम्बेडेड टाइमस्टैम्प होता है:
ObjectId("...").getTimestamp()।
मुख्य बिंदु
_idपरfindOne()एकल डॉक्यूमेंट पुनर्प्राप्ति के लिए सबसे तेज़ तरीका है।_idपर डिफ़ॉल्ट रूप से एक अद्वितीय इंडेक्स होता है, जिससे लुकअप O(1) होता है।- हमेशा पूर्ण 24-कैरेक्टर हेक्स स्ट्रिंग का उपयोग करें जब ObjectId को मैन्युअल रूप से निर्दिष्ट करें।