MongoDB में ObjectId द्वारा डॉक्यूमेंट ढूंढना
प्रत्येक MongoDB डॉक्यूमेंट में एक अद्वितीय _id फील्ड होता है (डिफ़ॉल्ट रूप से एक ObjectId)। आप find() या findOne() के साथ ObjectId का उपयोग करके एक विशिष्ट डॉक्यूमेंट को पुनर्प्राप्त कर सकते हैं।
नमूना डेटा बनाना
> db.findByObjectIdDemo.insertOne({"ClientName":"Larry","ClientAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68cd657806ebf1256f11a") }
> db.findByObjectIdDemo.insertOne({"ClientName":"Chris","ClientAge":26});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68cdc57806ebf1256f11b") }
> db.findByObjectIdDemo.insertOne({"ClientName":"David","ClientAge":38,"isMarried":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd68cf657806ebf1256f11c") }
सभी डॉक्यूमेंट्स देखना
> db.findByObjectIdDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd68cd657806ebf1256f11a"), "ClientName" : "Larry", "ClientAge" : 23 }
{ "_id" : ObjectId("5cd68cdc57806ebf1256f11b"), "ClientName" : "Chris", "ClientAge" : 26 }
{ "_id" : ObjectId("5cd68cf657806ebf1256f11c"), "ClientName" : "David", "ClientAge" : 38, "isMarried" : true }
ObjectId द्वारा ढूंढना
> db.findByObjectIdDemo.find({ _id: new ObjectId("5cd68cf657806ebf1256f11c") })
.toArray(function(err, myDocument) { console.log(myDocument); });
आउटपुट:
[
{
"_id" : ObjectId("5cd68cf657806ebf1256f11c"),
"ClientName" : "David",
"ClientAge" : 38,
"isMarried" : true
}
]
सरल विकल्प: findOne()
एकल डॉक्यूमेंट के लिए, findOne() अधिक सीधा है:
> db.findByObjectIdDemo.findOne({ _id: ObjectId("5cd68cf657806ebf1256f11c") });
मुख्य बिंदु
ObjectIdएक 12-बाइट हेक्साडेसिमल मान है (टाइमस्टैम्प + मशीन + प्रोसेस + काउंटर)।- शेल में ObjectId बनाने के लिए हमेशा
new ObjectId("...")याObjectId("...")का उपयोग करें। findOne()एक डॉक्यूमेंट (या null) लौटाता है;find()एक कर्सर लौटाता है।- ड्राइवर्स में, अपने भाषा के ड्राइवर के ObjectId कंस्ट्रक्टर का उपयोग करें (उदाहरण के लिए, Node.js में
new ObjectId())।
ObjectId से टाइमस्टैम्प निकालना
> ObjectId("5cd68cf657806ebf1256f11c").getTimestamp()
ISODate("2019-05-11T10:25:10Z")
यह एप्लिकेशन-लेवल टाइमस्टैम्प फील्ड के बिना निर्माण समय प्राप्त करने के लिए उपयोगी है।