首页 > 解决方案 > 使用运算符 IN 的 Golang MongoDB 更新查询

问题描述

我想要的成就是在 MySQL 中这样的查询

UPDATE FROM inbox
SET unread = unread + 1
WHERE
projectID = ? AND
userID IN ("A", "B, "C")

MongoDBIN在 MySQL 中有类似的查询吗?

我已经在 Go 中尝试过使用https://github.com/mongodb/mongo-go-driver

_, err = m.db.Collection("inbox_counter").UpdateMany(ctx, bson.M{
     "userID":    bson.D{{"$in", userIDs}},
     "projectID": e[0].ProjectID,
}, bson.D{
     {"$inc", bson.D{{"unread", 1}}},
}, options.Update().SetUpsert(true))

但这对我的收藏没有影响

标签: mysqlmongodbgo

解决方案


使用bson.M{"$in": userIDs}代替bson.D{{"$in", userIDs}}过滤器和更新使用bson.M{"$inc": bson.M{"unread": 1}}代替bson.D{{"$inc", bson.D{{"unread", 1}}}}

_, err = m.db.Collection("inbox_counter").UpdateMany(ctx, bson.M{
     "userID":    bson.M{"$in": userIDs},
     "projectID": e[0].ProjectID,
},bson.M{"$inc": bson.M{"unread": 1}}, options.Update().SetUpsert(true))

推荐阅读