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

示例文档

{"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驱动程序中是否有类似的方法?


LEATH
浏览 102回答 1
1回答

慕哥9229398

使用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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go