与key关联的值
"_id"的类型
bson.ObjectId仅为a
string。
bson.M是一个类型
map[string]interface{},因此您需要Type断言来将id作为一个获取ObjectId:
objid, ok := m["_id"].(ObjectId)if !ok { panic("Not ObjectId")}并且
ObjectId具有一种
ObjectId.Hex()方法,该方法可精确返回您想要的内容:对象ID作为“纯”十六进制字符串:
fmt.Println(objid.Hex())
备择方案
objid可以简单地转换为,
string因为其基础类型为
string。因此,您可以使用许多其他选项将其转换为十六进制
string:
hexid := fmt.Sprintf("%x", string(objid))如果只想打印它,则可以直接执行以下操作:
fmt.Printf("%x", string(objid))注意:
将其转换为
string非常重要,否则
fmt程序包将调用其
String()方法,该方法将产生类似的字符串,
ObjectIdHex("537f700b537461b70c5f0000")而这将被转换为十六进制,这显然不是您想要的。或者,
您可以使用
encoding/hex包和
hex.EnpreToString()函数:
hexid := hex.EnpreToString([]byte(objid))



