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

Golang MongoDB 增量整数值

Golang MongoDB 增量整数值

Go
蓝山帝景 2022-06-13 17:34:41
我正在使用这个官方图书馆https://github.com/mongodb/mongo-go-driver这是我在 MongoDB 中的文档之一{    "_id": "5f0ebe6dfcee0f34c64b23b0",    "userID": "user A",    "unread": 1,    "projectID": 2}问题是我想增加(也可能减少)“未读”字段我尝试过使用“$inc”,它变成了这样{    "_id": "5f0ebe6dfcee0f34c64b23b0",    "userID": "user A",    "unread": {        "$incr": 1,    },    "projectID": 2}我认为会有两个条件文档已经存在文档尚不存在如果我正在使用UpdateOne,或者UpdateMany如果文档尚不存在,它将再次成为问题帮助我解决这个问题的人将不胜感激谢谢你,干杯^^
查看完整描述

3 回答

?
慕运维8079593

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

我得到了答案。所以我做了这样的代码


_, err = m.db.Collection("inbox_counter").UpdateOne(ctx, bson.M{

    "userID":    v.UserID,

    "projectID": v.ProjectID,

}, bson.D{

    {"$inc", bson.D{{"unread", 1}}},

}, options.Update().SetUpsert(true))

if err != nil {

    log.Println(err)

    return err

}

我正在使用 UpdateOne,因为每个用户和项目 ID 只有一个文档


您可以使用运算符$inc来增加值


感谢@Gibbs 推荐我使用upsert


查看完整回答
反对 回复 2022-06-13
?
30秒到达战场

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

您必须使用upsert- 如果存在其他插入,它将更新。


db.collectionName.update(

   { item: "ZZZ135" },   // Find query 

   {

     "$set":{                     // Update document

      item: "ZZZ135",

      stock: 5,

      tags: [ "database" ]

     }

   },

   { upsert: true }      // Option

)


查看完整回答
反对 回复 2022-06-13
?
倚天杖

TA贡献1828条经验 获得超3个赞

db.getCollection('table_name').update(

   { "key": "value" },   // Find query 

   {

     "$set":{                     // Update document

         "key": value

     },

    "$setOnInsert":{                     // Addd on Insert only

         "key1": value

     },

     "$inc": {

         "numberKey": 1 // Increment unread Or To decrement use -1

      }

   },

   { upsert: true } 

);


查看完整回答
反对 回复 2022-06-13
  • 3 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号