编辑文档使用结构切片
短信预约 -IT技能 免费直播动态提醒
编程网今天将给大家带来《编辑文档使用结构切片》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!
问题内容尝试使用官方 mongo 驱动程序更新 mongodb 中的文档,go.mongodb.org/mongo-driver/mongo
这是我要更新的结构
type activity struct {
timestamp time.time `bson:"timestamp,omitempty"`
type string `bson:"type,omitempty"`
}
type member struct {
id primitive.objectid `bson:"_id,omitempty"`
name string `bson:"name,omitempty"`
activities []activity `bson:"activities ,omitempty"`
}
这是更新文档的代码
filter := bson.M{"_id": m.ID}
update := bson.M{
"$set": bson.M{
"name": m.Name,
},
"$each": bson.M{"activities": m.Activities },
}
res, err := coll.UpdateOne(ctx, filter, update)
名称已更新,但活动没有任何反应
我做错了什么?我应该使用 replaceone 来代替吗?
解决方案
名称已更新,但活动没有任何反应
这是因为 $each 数组更新运算符设计为与 $addToSet(附加唯一)或 $push(附加)一起使用。
例如,如果您想更新没有重复活动的数组:
update := bson.M{
"$set": bson.M{
"name": obj.Name,
},
"$addToSet": bson.M{"activities": bson.M{"$each": obj.Activities }},
}
cursor, err := collection.UpdateOne(context.Background(), filter, update )
理论要掌握,实操不能落!以上关于《编辑文档使用结构切片》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341