如何使用Golang在MongoDB中存储UUID?

如何使用Golang在MongoDB中存储UUID?,mongodb,go,encode,uuid,Mongodb,Go,Encode,Uuid,使用Golang在MongoDB中存储github.com/google/uuiduuid字段时,它将转换为子类型为0的base64二进制文件。这使得无法通过UUID自然查询文档字段 插入的用户看起来像: {“_id”:{“$binary”:“0bHYoNWSTV+KqWSl54YWiQ==”,“$type”:“0”},“name”:“Isabella”} 当通过生成的UUID查询d1b1d8a0-d592-4d5f-8aa9-64a5e7861689时,结果为空 类型用户结构{ UserId

使用Golang在MongoDB中存储
github.com/google/uuid
uuid字段时,它将转换为子类型为0的base64二进制文件。这使得无法通过UUID自然查询文档字段

插入的用户看起来像:

{“_id”:{“$binary”:“0bHYoNWSTV+KqWSl54YWiQ==”,“$type”:“0”},“name”:“Isabella”}
当通过生成的UUID查询d1b1d8a0-d592-4d5f-8aa9-64a5e7861689时,结果为空

类型用户结构{
UserId uuid.uuid`json:“UserId”bson:“\u id”`
名称字符串`json:“Name”bson:“Name”`
}
func(repo userRepo)用户(uuidIn uuid.uuid)(model.User,错误){
集合:=repo.database.collection(mongoCollectionUser)
var用户模型
错误:=collection.FindOne(context.Background(),
bson.M{“\u id”:uuidIn},
).解码(&用户)
//错误:mongo:结果中没有文档
}

由于
github.com/google/uuid
uuid类型是
[16]字节的别名,Mongo将其存储为子类型0x00的BSON二进制文件。尝试将UUID转换为BSON的base64二进制格式是不切实际的。因此,您可以选择使用我编写的可直接插入mongo客户端结构的编码器和解码器功能: