El valor asociado con la clave "_id"
es de tipo bson.ObjectId
que es simplemente una string
.
bson.M
es un tipo map[string]interface{}
, por lo que necesita Escriba aserción
para obtener la identificación como ObjectId
:
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
Y el ObjectId
tiene un ObjectId.Hex()
método que devuelve exactamente lo que desea:la identificación del objeto como una cadena hexadecimal "pura":
fmt.Println(objid.Hex())
Alternativas
objid
simplemente se puede convertir a string
porque su tipo subyacente es string
. Por lo tanto, puede usar una serie de opciones adicionales para convertirlo en una string
hexadecimal :
hexid := fmt.Sprintf("%x", string(objid))
Si solo desea imprimirlo, puede hacerlo directamente:
fmt.Printf("%x", string(objid))
string
es importante si no el fmt
el paquete llamaría a su String()
método que da como resultado una cadena como ObjectIdHex("537f700b537461b70c5f0000")
y esto es lo que se convertiría en hexadecimal, que claramente no es lo que quieres.
Alternativamente puede usar el encoding/hex
paquete y el hex.EncodeToString()
función:
hexid := hex.EncodeToString([]byte(objid))