Værdien forbundet med nøglen "_id"
er af typen bson.ObjectId
som blot er en string
.
bson.M
er en type map[string]interface{}
, så du har brug for Typepåstand
for at få id'et som et ObjectId
:
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
Og ObjectId
har en ObjectId.Hex()
metode, som returnerer præcis, hvad du ønsker:objekt-id'et som en "ren" hex-streng:
fmt.Println(objid.Hex())
Alternativer
objid
kan simpelthen konverteres til string
fordi dens underliggende type er string
. Så du kan bruge en række yderligere muligheder til at konvertere den til en hex string
:
hexid := fmt.Sprintf("%x", string(objid))
Hvis du bare vil udskrive det, kan du gøre direkte:
fmt.Printf("%x", string(objid))
Bemærk: Konvertering til string
er vigtig ellers fmt
pakken ville kalde sin String()
metode, der resulterer i en streng som ObjectIdHex("537f700b537461b70c5f0000")
og det er det, der ville blive konverteret til hex, hvilket tydeligvis ikke er, hvad du ønsker.
Alternativt du kan bruge encoding/hex
pakken og hex.EncodeToString()
funktion:
hexid := hex.EncodeToString([]byte(objid))