猿问

Golang MongoDB 增量整数值

我正在使用这个官方图书馆


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

}

我认为会有两个条件

  1. 文档已经存在

  2. 文档尚不存在

如果我正在使用UpdateOne,或者UpdateMany如果文档尚不存在,它将再次成为问题

帮助我解决这个问题的人将不胜感激

谢谢你,干杯^^


蓝山帝景
浏览 238回答 3
3回答

慕运维8079593

我得到了答案。所以我做了这样的代码_, 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

30秒到达战场

您必须使用upsert- 如果存在其他插入,它将更新。db.collectionName.update(   { item: "ZZZ135" },   // Find query    {     "$set":{                     // Update document      item: "ZZZ135",      stock: 5,      tags: [ "database" ]     }   },   { upsert: true }      // Option)

倚天杖

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 } );
随时随地看视频慕课网APP

相关分类

Go
我要回答