mongodb - 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()
当切片中有项目但未设置空切片时,它可以工作。
解决方案
MediaFilterExceptionUserIds 类型应从 []int 更改为 *[]int,
type Group struct {
Id int64 `bson:"_id,omitempty"`
MediaFilterExceptionUserIds *[]int `bson:"media_filter_exception_user_ids,omitempty"`
}
接着
group.MediaFilterExceptionUserIds = &[]int{}
将其设置为 mongodb 中的空数组
推荐阅读
- video - 使用 ffmpeg 水平翻转 mp4 视频而不会损失质量,并且会增加文件大小(太大)
- java - Java Spark 的单元测试代码不起作用,但使用相同代码运行的 spark 运行良好
- javascript - React Hook useCallback 收到一个依赖未知的函数。改为传递内联函数
- python - 这行文本中的“1”参数定义了什么?
- pandas - 打印特定月份数据帧的最后 10 行,不包括最后一行
- node.js - 如何从 vue js 访问后端节点 js 公用文件夹
- javascript - Node.js - 通过 API 请求将文件传递到不同的服务器
- javascript - 如何在不重新渲染父级的情况下从另一个子级更改子级状态
- mysql - Mysql为什么显示零结果?
- python - 为什么我的 python POST 请求无法收集我想要的信息?