Hodnota spojená s klíčem "_id"
je typu bson.ObjectId
což je jednoduše string
.
bson.M
je typ map[string]interface{}
, takže potřebujete Určení typu
získat ID jako ObjectId
:
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
A ObjectId
má ObjectId.Hex()
metoda, která vrátí přesně to, co chcete:ID objektu jako "čistý" hexadecimální řetězec:
fmt.Println(objid.Hex())
Alternativy
objid
lze jednoduše převést na string
protože jeho základní typ je string
. Můžete tedy použít řadu dalších možností, jak jej převést na hexadecimální string
:
hexid := fmt.Sprintf("%x", string(objid))
Pokud jej chcete pouze vytisknout, můžete to udělat přímo:
fmt.Printf("%x", string(objid))
Poznámka: Převede se na string
jinak je důležitý fmt
balíček by zavolal svůj String()
výsledkem je řetězec jako ObjectIdHex("537f700b537461b70c5f0000")
a to je to, co by bylo převedeno na hex, což zjevně není to, co chcete.
Alternativně můžete použít encoding/hex
balíček a hex.EncodeToString()
funkce:
hexid := hex.EncodeToString([]byte(objid))