MongoDB में BinData सबटाइप द्वारा क्वेरी करना
MongoDB में बाइनरी डेटा BinData के रूप में संग्रहीत होता है जिसमें एक सबटाइप (0-255) होता है। subtype() विधि का उपयोग करके आप विशिष्ट सबटाइप वाले दस्तावेज़ों को क्वेरी कर सकते हैं।
सैंपल डेटा बनाना (विभिन्न सबटाइप्स के साथ)
> db.demo249.insertOne({ "_id" : BinData(0,"AQAAAAEBAAVlbl9VSwAAAAAAAAhv") });
{ "acknowledged" : true, "insertedId" : BinData(0,"AQAAAAEBAAVlbl9VSwAAAAAAAAhv") }
> db.demo249.insertOne({ "_id" : BinData(4,"CNDF66qIlCY92q1vFAAAAQ==") });
{ "acknowledged" : true, "insertedId" : UUID("08d0c5eb-aa88-9426-3dda-ad6f14000001") }
> db.demo249.insertOne({ "_id" : BinData(3,"CNDF66qJ29g92q1vFAAAEw==") });
{ "acknowledged" : true, "insertedId" : BinData(3,"CNDF66qJ29g92q1vFAAAEw==") }
सभी दस्तावेज़ देखना
> db.demo249.find();
आउटपुट:
सबटाइप 0 (जेनेरिक बाइनरी) वाले दस्तावेज़ क्वेरी करना
> db.demo249.find(function(){ return this._id.subtype() == 0 });आउटपुट:
सामान्य BinData सबटाइप्स
| सबटाइप | नाम | विवरण |
|---|---|---|
| 0 | Generic | सामान्य बाइनरी डेटा |
| 1 | Function | फंक्शन कोड (deprecated) |
| 2 | Binary (Old) | पुराना बाइनरी फॉर्मेट |
| 3 | UUID (Old) | पुराना UUID फॉर्मेट |
| 4 | UUID | मानक UUID (RFC 4122) |
| 5 | MD5 | MD5 हैश |
| 128-255 | User defined | उपयोगकर्ता-परिभाषित |
बेहतर क्वेरी: $type ऑपरेटर
जावास्क्रिप्ट फंक्शन के बजाय $type ऑपरेटर का उपयोग करें (अधिक कुशल, इंडेक्स उपयोग कर सकता है):
> // सबटाइप 0 के लिए
> db.demo249.find({ _id: { $type: "binData" } }) // सभी बाइनरी
> // विशिष्ट सबटाइप के लिए (MongoDB 3.4+)
> db.demo249.find({ _id: { $type: 5 } }) // 5 = binData सबटाइप 0 का एलियास
> // या संख्यात्मक सबटाइप
> db.demo249.find({ _id: { $type: 0 } })
नोट
उदाहरण में जावास्क्रिप्ट फंक्शन find(function(){...}) का उपयोग किया गया है जो धीमा है और इंडेक्स का उपयोग नहीं कर सकता। उत्पादन में $type ऑपरेटर पसंद करें।