douyou7102 2018-09-07 14:17
浏览 121
已采纳

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

struct and method:

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

trying to set media_filter_exception_user_ids to an empty []int{} and it doesn't work:

group := Group{}
group.FindById(123)
group.MediaFilterExceptionUserIds = []int{}
group.Save()

It works when there's an item inside the slice, but empty slice is not set.

  • 写回答

1条回答 默认 最新

  • dps43633 2018-09-07 14:24
    关注

    MediaFilterExceptionUserIds type should change from []int to *[]int,

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

    and then

    group.MediaFilterExceptionUserIds = &[]int{}
    

    will set it to an empty array in mongodb

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂