mgo的ObjectId存入redis后,再次从redis里读取使用

伪代码

type A struct {
    Id bson.ObjectId `bson:"_id" redis:"id"` 
}

type B struct{
  Aid bson.ObjectId
}

var a = new(A)
a.Id = bson.NewObjectId()

a对象存入mongo和redis 在redis中显示 "id" "ObjectIdHex(\"580c8790c7f41c47a98a31e1\")"

然后我想把这条数据从redis中读取 这时候读取出来的A.Id打印出来是 ObjectIdHex("4f626a656374496448657828223538306338373930633766343163343761393861333165312229") 这样使得我没法把这个A.Id赋值给B.Id,报错说objectid长度不对,格式不正确 我想问下可能造成这个情况的原因,比如编码什么的 还有是否有解决方案

已邀请:

lucky - 打杂的

赞同来自:

现在我能想到的解决方案比较笨 比如在A中再增加一个string格式的属性 使用 bson.ObjectId.Hex()返回的纯字符串格式储存 使用的时候 再用bson.ObjectIdHex()转回来

觉得这样处理方式不是很优雅 请问有好的方案么

要回复问题请先登录注册