MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Rufen Sie den ObjectIdHex-Wert von der mgo-Abfrage ab

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))