Der dem Schlüssel "_id"
zugeordnete Wert ist vom Typ bson.ObjectId
das ist einfach ein string
.
bson.M
ist ein Typ map[string]interface{}
, also brauchen Sie Typzusicherung
um die ID als ObjectId
zu erhalten :
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
Und die ObjectId
hat eine ObjectId.Hex()
Methode, die genau das zurückgibt, was Sie wollen:die Objekt-ID als "reinen" Hex-String:
fmt.Println(objid.Hex())
Alternativen
objid
kann einfach in string
umgewandelt werden weil sein zugrunde liegender Typ string
ist . Sie können also eine Reihe weiterer Optionen verwenden, um ihn in einen hexadezimalen string
umzuwandeln :
hexid := fmt.Sprintf("%x", string(objid))
Wenn Sie es nur ausdrucken möchten, können Sie das direkt tun:
fmt.Printf("%x", string(objid))
Hinweis: Konvertieren in string
wichtig ist sonst der fmt
Paket würde seinen String()
aufrufen -Methode, die zu einer Zeichenfolge wie ObjectIdHex("537f700b537461b70c5f0000")
führt und dies würde in Hex konvertiert werden, was eindeutig nicht das ist, was Sie wollen.
Alternativ Sie können den encoding/hex
verwenden
Paket und den hex.EncodeToString()
Funktion:
hexid := hex.EncodeToString([]byte(objid))