Mongodb中一个小巧的数据更新命令$inc

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第55篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。

$inc是一个很小巧的命令。说它小巧,一个是因为短,只有三个字符。另一个是说它功能轻巧。在开发库存,电商类的应用时,往往遇到订单增加,库存减少的数据更新场景。使用$inc命令,可以将订单增加,库存减少在同一个原子操作中完成。使得这样复杂的数据性一致操作,变得很轻巧。同时,官方文档给出的篇幅也很小。忙碌了一天,阅读文档时也顿觉轻巧。

定义

使用操作符$inc,按照用户指定的大小,增加或减少字段值

语法

使用$inc操作符需要遵照下面的语法。其中,amount正值表示向字段增加,复制表示减少。

{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ...}}

行为

从mongodb5.0开始,更新操作的顺序按照文档字段名的字母表顺序执行。带有数字名称的字段,按照数字顺序更新。

如下面的更新语句中, 字段"a.2"在"a.10"前更新。因为数字2排列在数字10前。

{$set: { "a.2": <new value>, "a.10": <new value>}}

操作符$inc接受正值和负值。

当字段不存在是,操作符$inc添加字段并将字段设置为指定的数值。

使用$inc操作空值null时,Mongodb会报错。

单文档操作中使用$inc操作符修改数据的行为是一个原子操作。

mongodb 5.0版本以后,向$inc传入空表达式({ })时,mongodb不再抛出错误。空表达式不会修改字段值 ,也不会在oplog中,添加新的操作记录。

应用举例

创建一个products集合,并插入数据。

db.products.insertOne({_id: 1,sku: "abc123",quantity: 10,metrics: { orders: 2, ratings: 3.5}}
)

构建数据修改脚本,满足下面的数据更新要求

  • 将字段"metrics.orders"值增加1
  • 将字段值quantity减2
db.products.updateOne({sku: "abc123"},{$inc: {quantity: -2, "metrics.orders": 1}}
)

查看更新结果

db.products.find()
{"_id" : 1,"sku" : "abc123","quantity" : 8,"metrics" : {"orders" : 3,"ratings" : 3.5}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python:百度AI开放平台——OCR图像文字识别应用

一、注册百度AI开放平台 使用百度AI服务的步骤为&#xff1a; 注册&#xff1a;注册成为百度AI开放平台开发者&#xff1b;创建AI应用&#xff1a;在百度API开放平台上创建相关类型的的AI应用&#xff0c;获得AppID、API Key和Secret Key&#xff1b;调用API&#xff1a;调用…

渗透测试:数据库UDF提权(linux)

目录 开头: 1.UDF提权简介&#xff1a; 1.1共享库文件(UDF文件)指定目录&#xff1a; 版本特征&#xff1a; 操作系统版本&#xff1a; 2.靶场UDF提权复现 提权前提 1.要有一个高权限的MySQL的账号 ​编辑 2.MySQL的权限配置secure_file_priv为空 3.必须有存放UDF文件的…

PHP8.3-ZTS版本安装流程以及添加扩展

下载php-8.3.x.tar.gz至服务器并解压 [rootapisix-test php-8.3.4]# wget https://www.php.net/distributions/php-8.3.4.tar.gz进入目录执行编译命令&#xff0c;必须要带 --enable-zts 才能激活zts功能 [rootapisix-test php-8.3.4]# ./configure --prefix/usr/local/p…

抖音快手直播录屏+无水印下载视频V3.6

抖音快手直播录屏无水印下载视频更新最新版本V3.6 下载&#xff1a;https://download.csdn.net/download/m0_66047725/88978976 更多资源下载&#xff1a;关注我。

Stable Diffusion WebUI 附加功能/图片放大(Extras):单张图片/批量处理/从目录进行批量处理

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 篇文章主要讲解 Stable Diffusion WebUI 的附加功能/图片放大&#xff08;Extras&#xff09;的使用&#xff0c;主要…

[ruby on rails] ruby使用vscode做开发

ruby LSP实现 ruby插件推荐用这个来实现&#xff0c;但是现在这个在加载文件索引时候&#xff0c;特别慢&#xff0c;时好时坏&#xff0c;所以现在推荐用Solargraph实现 ruby LSP要求ruby版本3以上&#xff0c;如果在旧版本中使用&#xff0c;需要指定bundleGemfile路径 旧版…

1-31 正则表达式 String Buffer String Builder

一.作用:判断指定的String类型值 是否符合指定的规则存储的公式,正确规则表达式 二.为了避免发开中存在差异,Java提出了一些指定的字符,进行正则的编写 符号含义^行起始符 (实际开发中不常用)$行结束符(实际开发中不常用)[]表示某一个位置 , 当且仅当该位置上只有一种可能 []…

量化交易入门(三十八)CCI指标Python实现和回测

今天我们先单纯用CCI指标来完成策略的编写&#xff0c;后续我们会改进这个策略&#xff0c;将CCI指标和前面讲到的MACD和RSI相结合来优化&#xff0c;看看我们优化后的效果会不会更好。 一、量化策略 CCI指标在量化交易中的策略&#xff1a; 在以下情况下生成买入信号&#…

预处理指令——一些比较少见的概念

前言&#xff1a;预处理是我们的c语言源代码成为可执行程序的第一个步骤。而宏和预处理指令都是在这个阶段完成。本节内容就是关于宏和预处理指令相关知识点的解析。 目录 宏 预定义符号 #define定义常量 #define定义符号 #define定义宏 带副作用的宏参数 宏的替换规则…

基于SSM的“超市管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“超市管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能设计图 首页 后台管理登录页面 采购查询管理 采购员登录…

linux正则表达式之[]

1.[]含义 linux正则表达式[]表示字符集合的重复特殊字符的符号。 2.样例 正则表达式[]样例 命令1&#xff1a; grep -n "p[wldn]" anaconda-ks.cfg #需要特别注意的是&#xff0c;在[ ]中“仅代表一个待搜索的字符”。命令1的意思是搜索含有(pw)或(pl)或(pd)或…

配置 施耐德 modbusTCP 分布式IO子站 RPA0100

1. 总体步骤 2. 软件组态&#xff1a;在 Unity Pro 软件中创建编辑 PRA 模块工程 2.1 新建项目 模块箱硬件型号如下 点击 Unity Pro 软件左上方【新建】按钮&#xff0c;选择正确的 DIO 模块型号、背板型号 2.2 模块组态 2.2.1 拖拽添加模块 双击【配置】菜单下的【0&…

数据库设计-MySQL设计小册

前言 最近回顾了下MySQL相关的知识&#xff0c;比如索引、几大日志、事务、MVCC、SQL执行流程、Buffer Pool等等。理论知识看了一大堆&#xff0c;自然还是需要实践的&#xff0c;第一个反应就是数据库设计规范。项目开发中&#xff0c;数据库设计自然是重要的一环&#xff0c…

dotcpp题目 1020: [编程入门]猴子吃桃的问题

一、题目 题目描述 猴子吃桃问题。猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。 第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时&#xff0c…

关于loop( ) 阻塞和非阻塞探究

一、SIR的补充 在上几篇博客中&#xff0c;有朋友私信问我&#xff0c;在ticker函数程序和中断服务程序&#xff08;ISR&#xff09;中写 物联网请求报错。怎么回事&#xff0c;在此解释。控制台如下 1.1解释 在使用 Ticker 函数和中断服务程序&#xff08;ISR&#xff09;时…

ARM IHI0069F GIC architecture specification (6)

2.3 亲和路由 亲和路由是一种基于分层地址的方案&#xff0c;用于识别中断路由的特定PE节点。 对于 PE&#xff0c;AArch64 状态的亲和性值在 MPIDR_EL1 中定义&#xff0c;AArch32 状态的亲和性值在 MPIDR 中定义&#xff1a; • 关联路由是一个由四个8 位关联字段组成的32 位…

问题解决:gorm查询oracle库表,返回struct字段数据为空的问题

package model// 表对应的struct // github.com/cengsin/oracle v1.0.0 // gorm.io/gorm v1.21.16 // 注意&#xff1a;column:USERNAME字段必须大写&#xff08;oracle表中字段名大写&#xff09;&#xff0c;否则查询出的struct字段值会为空 type BBUser struct {Username …

开源简单方便功能强大的Devops工具:Goploy

Goploy&#xff1a;加速您的DevOps旅程&#xff0c;拥抱无缝部署——选择Goploy&#xff0c;让您从繁琐的发布与回滚中解放出来&#xff0c;尽享高效、智能与便捷的自动化部署力量&#xff01; - 精选真开源&#xff0c;释放新价值。 概览 现在大部分流行的发布工具功能虽然强…

Leetcode-2810-故障键盘-c++

题目详见https://leetcode.cn/problems/faulty-keyboard/ 题解 这道题的关键是如何合理地使用STL&#xff0c;毕竟是一道简单题。 之前常用到的Vector容器是单向开口的连续内存空间 deque则是一种双向开口的连续线性空间&#xff0c;又称双端动态数组。所谓的双向开口&#x…

Mongodb字段更新操作符$currentDate

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第54篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。 本文基于Mongodb的官方文档&#xff0c;整理了Mongodb字段更新操作符$currentDate的定义&#xff…