De waarde die is gekoppeld aan sleutel "_id"
is van het type bson.ObjectId
dat is gewoon een string
.
bson.M
is een type map[string]interface{}
, dus je hebt Typebevestiging
nodig om de id te krijgen als een ObjectId
:
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
En de ObjectId
heeft een ObjectId.Hex()
methode die precies teruggeeft wat je wilt:het object-ID als een "pure" hexadecimale tekenreeks:
fmt.Println(objid.Hex())
Alternatieven
objid
kan eenvoudig worden geconverteerd naar string
omdat het onderliggende type string
. is . Je kunt dus nog een aantal andere opties gebruiken om het om te zetten in een hex string
:
hexid := fmt.Sprintf("%x", string(objid))
Als u het alleen wilt afdrukken, kunt u direct het volgende doen:
fmt.Printf("%x", string(objid))
Opmerking: Converteren naar string
is belangrijk anders is de fmt
pakket zou zijn String()
. aanroepen methode die resulteert in een string zoals ObjectIdHex("537f700b537461b70c5f0000")
en dit is wat zou worden omgezet in hex, wat duidelijk niet is wat je wilt.
Alternatief je kunt de encoding/hex
gebruiken
pakket en de hex.EncodeToString()
functie:
hexid := hex.EncodeToString([]byte(objid))