कुंजी "_id"
. से संबद्ध मान प्रकार का है bson.ObjectId
जो बस एक string
है ।
bson.M
एक प्रकार है map[string]interface{}
, इसलिए आपको कथन टाइप करें
आईडी को ObjectId
. के रूप में प्राप्त करने के लिए :
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
और ObjectId
एक ObjectId.Hex()
है
विधि जो ठीक वही लौटाती है जो आप चाहते हैं:ऑब्जेक्ट आईडी "शुद्ध" हेक्स स्ट्रिंग के रूप में:
fmt.Println(objid.Hex())
विकल्प
objid
बस string
. में परिवर्तित किया जा सकता है क्योंकि इसका अंतर्निहित प्रकार string
है . तो आप इसे हेक्स string
में बदलने के लिए कई और विकल्पों का उपयोग कर सकते हैं :
hexid := fmt.Sprintf("%x", string(objid))
अगर आप इसे प्रिंट करना चाहते हैं, तो आप सीधे कर सकते हैं:
fmt.Printf("%x", string(objid))
नोट: इसे string
में कनवर्ट करना अन्य महत्वपूर्ण है fmt
पैकेज अपने String()
. को कॉल करेगा विधि जिसके परिणामस्वरूप एक स्ट्रिंग होती है जैसे ObjectIdHex("537f700b537461b70c5f0000")
और यही वह है जिसे हेक्स में परिवर्तित किया जाएगा जो स्पष्ट रूप से वह नहीं है जो आप चाहते हैं।
वैकल्पिक रूप से आप encoding/hex
का उपयोग कर सकते हैं
पैकेज और hex.EncodeToString()
समारोह:
hexid := hex.EncodeToString([]byte(objid))