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

mgo क्वेरी से ObjectIdHex मान प्राप्त करें

कुंजी "_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))



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Concat int और string array फ़ील्ड जो अलग-अलग सरणियों में हैं

  2. मोंगोडब में किसी फ़ील्ड का केवल मान कैसे लौटाएं?

  3. प्रतिक्रिया में, मैं मोंगो से पेज पर दो सूचियों को कॉल करता हूं और मैं दूसरे में दिखाए गए फ़िल्टर को फ़िल्टर करने के लिए एक पर क्लिक करना चाहता हूं

  4. मोंगोडब एकत्रीकरण क्वेरी संचयी मूल्य के घटाव और समूहीकरण के लिए

  5. मैं कैसे जांचूं कि किसी अनुक्रमणिका का उपयोग किया जा रहा है या नहीं