MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

नोड का उपयोग करके मोंगोडब बाइनरी _id को LUUID में परिवर्तित करना

तो, सबसे पहले $binary . को बंद करें और BinData मूल रूप से एक ही चीज़ को अलग-अलग तरीकों से लिखा/प्रतिनिधित्व किया जाता है। अपने उदाहरण और इस संदर्भ का उपयोग करके आप इसे "मोंगो शैल" मोड में इस तरह लिख सकते हैं:

BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")

या "सख्त" मोड में जो बन जाता है:

{ "$binary" : "AAGOBh3pqkWvtaK8AO2U9w==", "$type" : "03" }

अब, यहां टाइप 3 वास्तव में बीएसओएन स्पेक के अनुसार उपप्रकार 3 (बाइनरी प्रकार का) को संदर्भित करता है जिसका अर्थ है कि यह एक "यूयूआईडी (पुराना)" उपप्रकार है। ऊपर दिए गए संदर्भ के अनुसार, स्ट्रिंग ही वास्तव में एक base64 है एक बाइनरी स्ट्रिंग का प्रतिनिधित्व। इस वजह से (मैं अनुमान लगा रहा हूं) robomongo मूल रूप से यूयूआईडी को परिवर्तित कर रहा है और जब आप डेटा ब्राउज़ कर रहे हैं तो इसे आपके लिए प्रदर्शित कर रहा है। आइए इसके बजाय mongo . में मैन्युअल रूप से ऐसा करने का प्रयास करें खोल, पहले इसे हेक्स में परिवर्तित करके:

> var foo = BinData(3, "AAGOBh3pqkWvtaK8AO2U9w==")
> foo.hex()
00018e061de9aa45afb5a2bc00ed94f7

अब, इसे UUID कंस्ट्रक्टर में प्लग करें और देखें कि क्या यह वापस अनुवाद करता है:

> var uuid = new UUID("00018e061de9aa45afb5a2bc00ed94f7")
> uuid
BinData(3,"AAGOBh3pqkWvtaK8AO2U9w==")

और, यह करता है - सभी robomongo कर रहा है पठनीयता के लिए कुछ डैश जोड़ रहा है। पूर्णता के लिए, आपके अन्य उदाहरण के साथ मैं डैश हटा दूंगा और एक यूयूआईडी बनाउंगा, BinData दिखाएं संस्करण और वापस कनवर्ट करें:

> var bar = UUID("d72f21fe47808040ab3da1fb01045d3a")
> bar
BinData(3,"1y8h/keAgECrPaH7AQRdOg==")
> bar.hex()
d72f21fe47808040ab3da1fb01045d3a

इसलिए, आपको नोड में बेस 64 एन्कोडिंग के बीच कनवर्ट करने की आवश्यकता है। मेरे पास node.js नहीं है पर्यावरण परीक्षण करने के लिए, लेकिन ऐसा लगता है कि साइट पर कहीं और पहले कवर किया गया है।

संपादित करें:

यह नोड.जेएस में एक कार्यशील कार्य है जो बाइनरी को हेक्स यूयूआईडी में परिवर्तित करता है:

function Bin2HexUUID(bin){
    var hex = new Buffer(bin, 'base64').toString('hex');
    return hex.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, function (){
        return arguments[1]+"-"+arguments[2]+"-"+arguments[3]+"-"+arguments[4]+"-"+arguments[5];
    });
}

//use example
var binary_id = { "$binary" : "AAGOBh3pqkWvtaK8AO2U9w==", "$type" : "03" };
console.log(Bin2HexUUID(binary_id.$binary)); //00018e06-1de9-aa45-afb5-a2bc00ed94f7



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एकीकरण परीक्षण चलाते समय एंबेडेड MongoDB

  2. मोंगोडीबी $isArray

  3. मोंगोडब सेवा शुरू नहीं होगी

  4. mongodb:किसी स्तंभ का उच्चतम संख्यात्मक मान ज्ञात करना

  5. [इन्फोग्राफिक] कैसेंड्रा बनाम मोंगोडीबी की तुलना करना