mgo golang不使用$ set更新空数组

时间:2018-09-07 14:17:21

标签: mongodb go mgo

结构和方法:

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()

当切片中有一个项目但未设置空切片时,它可以工作。

1 个答案:

答案 0 :(得分:0)

MediaFilterExceptionUserIds类型应从[] int更改为* [] int,

type Group struct {
    Id                          int64             `bson:"_id,omitempty"`
    MediaFilterExceptionUserIds *[]int            `bson:"media_filter_exception_user_ids,omitempty"`
}

然后

group.MediaFilterExceptionUserIds = &[]int{}

将其设置为mongodb中的空数组