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

问题描述 投票:0回答:1

结构和方法:

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

它在切片内有一个项目时有效,但未设置空切片。

mongodb go mgo
1个回答
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中的空数组

© www.soinside.com 2019 - 2024. All rights reserved.