Värdet som är kopplat till nyckeln "_id"
är av typen bson.ObjectId
som helt enkelt är en string
.
bson.M
är en typ map[string]interface{}
, så du behöver Typpåstående
för att få id:t som ett ObjectId
:
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
Och ObjectId
har en ObjectId.Hex()
metod som returnerar exakt vad du vill ha:objekt-id som en "ren" hex-sträng:
fmt.Println(objid.Hex())
Alternativ
objid
kan helt enkelt konverteras till string
eftersom dess underliggande typ är string
. Så du kan använda ett antal ytterligare alternativ för att konvertera den till en hexadecimal string
:
hexid := fmt.Sprintf("%x", string(objid))
Om du bara vill skriva ut det kan du göra direkt:
fmt.Printf("%x", string(objid))
Obs! Konverterar den till string
är viktigt annars fmt
paketet skulle anropa dess String()
metod som resulterar i en sträng som ObjectIdHex("537f700b537461b70c5f0000")
och det här är vad som skulle konverteras till hex, vilket helt klart inte är vad du vill ha.
Alternativt du kan använda encoding/hex
paketet och hex.EncodeToString()
funktion:
hexid := hex.EncodeToString([]byte(objid))