mgo golang не обновляет пустой массив, используя $ set - PullRequest
0 голосов
/ 07 сентября 2018

структура и метод:

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 голосов
/ 07 сентября 2018

Тип MediaFilterExceptionUserIds должен измениться с [] int на * [] int,

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

, а затем

group.MediaFilterExceptionUserIds = &[]int{}

установит его в пустой массив в mongodb

...