猿问

mgo golang 不使用 $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()

当切片中有一个项目但未设置空切片时它会起作用。


海绵宝宝撒
浏览 67回答 1
1回答

慕运维8079593

MediaFilterExceptionUserIds 类型应从 []int 更改为 *[]int,type Group struct {     Id                          int64             `bson:"_id,omitempty"`     MediaFilterExceptionUserIds *[]int            `bson:"media_filter_exception_user_ids,omitempty"`}进而group.MediaFilterExceptionUserIds = &[]int{}将其设置为 mongodb 中的空数组
随时随地看视频慕课网APP

相关分类

Go
我要回答