MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Obtenha o valor ObjectIdHex da consulta mgo


O valor associado à chave "_id" é do tipo bson.ObjectId que é simplesmente uma string .

bson.M é um tipo map[string]interface{} , então você precisa de Asserção de tipo para obter o id como um ObjectId :
objid, ok := m["_id"].(ObjectId)
if !ok {
    panic("Not ObjectId")
}

E o ObjectId tem um ObjectId.Hex() método que retorna exatamente o que você deseja:o id do objeto como uma string hexadecimal "pura":
fmt.Println(objid.Hex())

Alternativas


objid pode simplesmente ser convertido para string porque seu tipo subjacente é string . Assim, você pode usar várias opções adicionais para convertê-lo em uma string hexadecimal :
hexid := fmt.Sprintf("%x", string(objid))

Se você quiser apenas imprimi-lo, você pode fazer diretamente:
fmt.Printf("%x", string(objid))

Observação: Convertendo para string é importante senão o fmt pacote chamaria seu String() método que resulta em uma string como ObjectIdHex("537f700b537461b70c5f0000") e isso é o que seria convertido em hexadecimal, o que claramente não é o que você deseja.

Alternativamente você pode usar o encoding/hex pacote e o hex.EncodeToString() função:
hexid := hex.EncodeToString([]byte(objid))