go mongodb 使用mgo remove碰到的问题

用go的mgo来使用mongo 碰到的问题总结:

struct tag

如果需要获得 id ,那么 需要将 id定义为 bson.ObjectId 类型

type Person struct {
    Id         bson.ObjectId   `bson:"_id,omitempty" json:"-"`
    FirstName  string          `bson:"firstName" json:"firstName"`
    MiddleName string          `bson:"middleName,omitempty" json:"middleName,omitempty"`
    LastName   string          `bson:"lastName" json:"lastName"`
    Inserted   time.Time       `bson:"inserted" json:"-"`
}
使用 id remove

因为使用了go的模板,所以在 前端传到后端的过程中造成直接传值错误,所以需要先将得到的 id 进行处理

直接将id传到后端的样子:ObjectIdHex("57be5b3c42d8b3683704c54e")

这个样子是使用了 bson.ObjectIdstring()方法

// String returns a hex string representation of the id.
// Example: ObjectIdHex("4d88e15b60f486e428412dc9").
func (id ObjectId) String() string {
	return fmt.Sprintf(`ObjectIdHex("%x")`, string(id))
}

但是我们需要的只是 4d88e15b60f486e428412dc9 这部分,

  • 在模板中加入自定义方法hex, 进行转换
"hex": func(val bson.ObjectId) string {
			return val.Hex()
		},

然后将这个id 传到后台后用 bson.ObjectIdHex()再包装,然后调用删除方法

err = db.C("info").RemoveId(bson.ObjectIdHex(id))

或

err := collection.Remove(bson.M{"_id": id})

转载于:https://my.oschina.net/solate/blog/737875

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值