MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ottieni il valore ObjectIdHex dalla query mgo

Il valore associato alla chiave "_id" è di tipo bson.ObjectId che è semplicemente una string .

bson.M è un tipo map[string]interface{} , quindi hai bisogno di Digita l'asserzione per ottenere l'ID come ObjectId :

objid, ok := m["_id"].(ObjectId)
if !ok {
    panic("Not ObjectId")
}

E il ObjectId ha un ObjectId.Hex() metodo che restituisce esattamente quello che vuoi:l'id oggetto come stringa esadecimale "pura":

fmt.Println(objid.Hex())

Alternative

objid può essere semplicemente convertito in string perché il suo tipo sottostante è string . Quindi puoi utilizzare una serie di ulteriori opzioni per convertirlo in una string esadecimale :

hexid := fmt.Sprintf("%x", string(objid))

Se vuoi solo stamparlo, puoi farlo direttamente:

fmt.Printf("%x", string(objid))

Nota: Convertindolo in string è importante altrimenti il ​​fmt il pacchetto chiamerebbe il suo String() metodo che risulta in una stringa come ObjectIdHex("537f700b537461b70c5f0000") e questo è ciò che verrebbe convertito in esadecimale che chiaramente non è quello che vuoi.

In alternativa puoi usare encoding/hex pacchetto e il hex.EncodeToString() funzione:

hexid := hex.EncodeToString([]byte(objid))