开发者社区 > 云原生 > Serverless > 正文

小程序云serverless云数据库数据如何自增1

已解决

问题描述

在阿里产品中的小程序云serverless中的云数据库数据如何自增1或减1,像腾讯小程序云一样调用db.command.inc(1),可以在该字段自增1,想问问阿里的小程序云是否有这一指令

期望结果

是否有这一方法,如果没有,那我想要加1,是否必须先从数据库获先取到数据,加1后再写入数据库?是否还有更好的方法?

已尝试的方法

再文档中并未发现此方法:https://help.aliyun.com/document_detail/196781.html

我的小程序云serverless是旧版的

再云函数中也尝试过:

await ctx.mpserverless.db.collection('birthdayUser').updateOne({
          _openid
        }, {
          $set: {
            // remindVal: 12
            remindVal: ctx.mpserverless.db.command.inc(1) // 报错,db里面没有command方法
          }
        })

展开
收起
数蜂 2022-10-07 10:42:23 221 0
1 条回答
写回答
取消 提交回答
  • EMAS Serverless
    采纳回答

    开发者您好,云数据库底层是基于mongodb实现,因此使用 mongo 的操作符号 $inc 可以完成自增操作,使用哪个命令可以看您的需求,这里以命令 findOneAndUpdate 为例:

    首先,我有一张要操作的订单表:

    现在,我希望对 name 为 Cheese 的订单,quantity 字段自增 1,云函数代码如下:

    module.exports = async (ctx) => {    const res = await ctx.mpserverless.db.collection('orders').findOneAndUpdate(        {            name: "Cheese"        },         {            $inc: { quantity: 1 }        },        {            returnNewDocument: true        }    )    return res};

    部署之后,点击运行,得到运行结果如下:

    执行结果: {"success":true,"result":{"value":{"date":"2021-03-13T11:21:39.000Z","quantity":17,"size":"small","price":12,"name":"Cheese","_id":"62dfa5caf5cf3ad91d4ba3a0"},"ok":1},"affectedDocs":1}

    此时 quantity 字段已经完成自增1了

    更多细节请参考 mongo 官方文档 $inc

    2022-10-14 20:33:47
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 热门讨论

    热门文章

    相关电子书

    更多
    云数据库十大经典案例 立即下载
    云数据库超大流量峰值保障最佳实践 立即下载
    ApsaraDB云数据库助力优架产品升级和架构变革 立即下载