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

如何使用多个目标更新多个文档

如何使用多个目标更新多个文档

Go
LEATH 2022-08-09 20:15:12
示例文档{"id": 1, "alive":true},{"id": 2, "alive":true},{"id": 3, "alive":true},{"id": 4, "alive":true}问题如果有像.想要将多个文档的活动值更新为 false。目前使用这种方式。var targetIds []int{1, 3, 4}var targetIds []int{1, 3, 4}collection := MongoClient.Database("my_database").Collection("my_collection")updateDoc := bson.M {    "$set": bson.M {        "alive": false,    }}for _, targetId := range targetIds{    filter := bson.M{        "id": targetId,    }    _, err := collection.UpdateOne(context.Background(), filter, updateDoc)    if err != nil {        panic(err)    }}例如,在postgresql中可以使用这种方式UPDATE [my_table] SET alive = false WHERE id IN [targetIds];不使用 for 循环。一个查询,就像示例 postgresql 查询中的方式在Go mongodb驱动程序中是否有类似的方法?
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

使用Collection.UpdateMany()而不是Collection.UpdateOne(),并构造一个与ID切片匹配的过滤器:

filter := bson.M{

    "id": bson.M{"$in": targetIds},

}

_, err := collection.UpdateMany(context.Background(), filter, updateDoc)

if err != nil {

    panic(err)

}


查看完整回答
反对 回复 2022-08-09
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

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