MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Obtenir la valeur ObjectIdHex de la requête mgo

La valeur associée à la clé "_id" est de type bson.ObjectId qui est simplement une string .

bson.M est un type map[string]interface{} , vous avez donc besoin de Assertion de type pour obtenir l'identifiant en tant que ObjectId :

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

Et le ObjectId a un ObjectId.Hex() méthode qui renvoie exactement ce que vous voulez :l'identifiant de l'objet sous la forme d'une chaîne hexadécimale "pure" :

fmt.Println(objid.Hex())

Alternatives

objid peut simplement être converti en string car son type sous-jacent est string . Vous pouvez donc utiliser un certain nombre d'options supplémentaires pour le convertir en une string hexadécimale :

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

Si vous voulez juste l'imprimer, vous pouvez faire directement :

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

Remarque : Le convertir en string est important sinon le fmt le paquet appellerait son String() méthode qui donne une chaîne comme ObjectIdHex("537f700b537461b70c5f0000") et c'est ce qui serait converti en hexadécimal, ce qui n'est clairement pas ce que vous voulez.

Alternativement vous pouvez utiliser le encoding/hex package et le hex.EncodeToString() fonction :

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