为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Go官方驱动执行addToSet?

如何使用Go官方驱动执行addToSet?

Go
收到一只叮咚 2023-07-17 14:01:23
我需要addToSet使用官方 Go MongoDB 驱动程序进行操作。在 MongoDB 中我们有一些文档:{ _id: 2, item: "cable", tags: [ "electronics", "supplies" ] }然后执行addToSet:db.inventory.update(   { _id: 2 },   { $addToSet: { tags: { $each: [ "camera", "electronics", "accessories" ] } } })结果:{  _id: 2,  item: "cable",  tags: [ "electronics", "supplies", "camera", "accessories" ]}
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

$addToSet是一个更新操作,如果你想更新单个文档,可以使用该Collection.UpdateOne()方法。

使用bson.M和/或bson.D类型来描述您的过滤器和更新文档。

例如:

update := bson.M{

    "$addToSet": bson.M{

        "tags": bson.M{"$each": []string{"camera", "electronics", "accessories"}},

    },

}

res, err := c.UpdateOne(ctx, bson.M{"_id": 2}, update)

这是一个完整的、可运行的应用程序,它连接到 MongoDB 服务器并执行上述更新操作:


ctx := context.Background()

client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost"))

if err != nil {

    panic(err)

}

defer client.Disconnect(ctx)


c := client.Database("dbname").Collection("inventory")


update := bson.M{

    "$addToSet": bson.M{

        "tags": bson.M{"$each": []string{"camera", "electronics", "accessories"}},

    },

}

res, err := c.UpdateOne(ctx, bson.M{"_id": 2}, update)

if err != nil {

    panic(err)

}

fmt.Printf("%+v", res)


查看完整回答
反对 回复 2023-07-17
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信