mgo golang 不使用 $set 更新空数组
mgo golang doesnt update empty array using $set
结构和方法:
type Group struct {
Id int64 `bson:"_id,omitempty"`
MediaFilterExceptionUserIds []int `bson:"media_filter_exception_user_ids,omitempty"`
}
func (g *Group) Save() error {
return DB.C("groups").UpdateId(g.Id, bson.M{"$set": &g})
}
func (g *Group) FindById() error {
return DB.C("groups").FindId(g.Id).One(&g)
}
尝试将 media_filter_exception_user_ids 设置为空 []int{} 但它不起作用:
group := Group{}
group.FindById(123)
group.MediaFilterExceptionUserIds = []int{}
group.Save()
切片中有项目但未设置空切片时有效。
MediaFilterExceptionUserIds 类型应从 []int 更改为 *[]int,
type Group struct {
Id int64 `bson:"_id,omitempty"`
MediaFilterExceptionUserIds *[]int `bson:"media_filter_exception_user_ids,omitempty"`
}
然后
group.MediaFilterExceptionUserIds = &[]int{}
将在mongodb
中将其设置为一个空数组
结构和方法:
type Group struct {
Id int64 `bson:"_id,omitempty"`
MediaFilterExceptionUserIds []int `bson:"media_filter_exception_user_ids,omitempty"`
}
func (g *Group) Save() error {
return DB.C("groups").UpdateId(g.Id, bson.M{"$set": &g})
}
func (g *Group) FindById() error {
return DB.C("groups").FindId(g.Id).One(&g)
}
尝试将 media_filter_exception_user_ids 设置为空 []int{} 但它不起作用:
group := Group{}
group.FindById(123)
group.MediaFilterExceptionUserIds = []int{}
group.Save()
切片中有项目但未设置空切片时有效。
MediaFilterExceptionUserIds 类型应从 []int 更改为 *[]int,
type Group struct {
Id int64 `bson:"_id,omitempty"`
MediaFilterExceptionUserIds *[]int `bson:"media_filter_exception_user_ids,omitempty"`
}
然后
group.MediaFilterExceptionUserIds = &[]int{}
将在mongodb
中将其设置为一个空数组