पायथन uuid
. के लिए डिफ़ॉल्ट क्रमांकन एक UUID
का उपयोग करता है बीएसओएन स्पेक
में द्विआधारी प्रतिनिधित्व क्योंकि यह श्रेणी प्रश्नों के लिए लगातार छँटाई सुनिश्चित करता है, और डेटा/अनुक्रमणिका के लिए कम संग्रहण का भी उपयोग करता है।
उदाहरण के लिए, ये तीन तार हेक्स में समतुल्य हैं:
5d78ad35ea5f11e1a183705681b29c47
5D78AD35EA5F11E1A183705681B29C47
5d78ad35ea5f11e1A183705681B29C47
..लेकिन स्ट्रिंग्स के रूप में अलग-अलग सॉर्ट ऑर्डर हैं:
> db.uuidsort.find().sort({_id:1})
{ "_id" : "5D78AD35EA5F11E1A183705681B29C47" }
{ "_id" : "5d78ad35ea5f11e1A183705681B29C47" }
{ "_id" : "5d78ad35ea5f11e1a183705681b29c47" }
बीएसओएन आकारों की तुलना करना:
> db.uuidtest.find()
{ "_id" : BinData(3,"XXitNepfEeGhg3BWgbKcRw==") }
{ "_id" : "5d78ad35ea5f11e1a183705681b29c47" }
> Object.bsonsize(db.uuidtest.findOne({_id: BinData(3,"XXitNepfEeGhg3BWgbKcRw==")}))
31
> Object.bsonsize(db.uuidtest.findOne({_id: "5d78ad35ea5f11e1a183705681b29c47"}))
47
यदि आप स्ट्रिंग के रूप में सम्मिलित करना चाहते हैं, तो आप UUID.hex का उपयोग कर सकते हैं। 32-वर्ण स्ट्रिंग समकक्ष प्राप्त करने के लिए:
>>> db.uuidtest.insert({'_id': uuid.hex})
'5d78ad35ea5f11e1a183705681b29c47'
यदि आप पायथन से स्ट्रिंग द्वारा यूयूआईडी खोजना चाहते हैं, तो आप uuid का उपयोग कर सकते हैं। यूयूआईडी तरीके:
>>> db.uuidtest.find_one({'_id':uuid.UUID('5d78ad35ea5f11e1a183705681b29c47')})
{u'_id': UUID('5d78ad35-ea5f-11e1-a183-705681b29c47')}
यदि आप mongo
. से स्ट्रिंग द्वारा UUIDs खोजना चाहते हैं खोल, एक UUID()
है सहायक:
> db.uuidtest.find({_id:UUID('5d78ad35ea5f11e1a183705681b29c47')})
{ "_id" : BinData(3,"XXitNepfEeGhg3BWgbKcRw==") }
नोट:अन्य ड्राइवर संस्करणों के साथ इंटरऑपरेबिलिटी के लिए कुछ अन्य यूयूआईडी उपप्रकार उपलब्ध हैं, जैसा कि bson.binary के लिए API दस्तावेज़ ।