登录
首页 >  Golang >  Go问答

编辑文档使用结构切片

来源:stackoverflow

时间:2024-03-29 15:09:28 499浏览 收藏

golang学习网今天将给大家带来《编辑文档使用结构切片》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习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 )

理论要掌握,实操不能落!以上关于《编辑文档使用结构切片》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>