sql >> Base de Datos >  >> NoSQL >> MongoDB

Obtenga el valor ObjectIdHex de la consulta mgo

El valor asociado con la clave "_id" es de tipo bson.ObjectId que es simplemente una string .

bson.M es un tipo map[string]interface{} , por lo que necesita Escriba aserción para obtener la identificación como ObjectId :

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

Y el ObjectId tiene un ObjectId.Hex() método que devuelve exactamente lo que desea:la identificación del objeto como una cadena hexadecimal "pura":

fmt.Println(objid.Hex())

Alternativas

objid simplemente se puede convertir a string porque su tipo subyacente es string . Por lo tanto, puede usar una serie de opciones adicionales para convertirlo en una string hexadecimal :

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

Si solo desea imprimirlo, puede hacerlo directamente:

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

Nota: Convirtiéndolo a string es importante si no el fmt el paquete llamaría a su String() método que da como resultado una cadena como ObjectIdHex("537f700b537461b70c5f0000") y esto es lo que se convertiría en hexadecimal, que claramente no es lo que quieres.

Alternativamente puede usar el encoding/hex paquete y el hex.EncodeToString() función:

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