MongoDB update inc修改器

MongoDB update inc修改器

MongoDB 中,通过 update 更新记录时,其中的 inc 修改器用于将一个字段的值增加或者减少,类似于编程中的自增或者自减操作。

MongoDB更新记录详解

语法

db_name.collection_name.update( <query>, {"$inc":{update}, { upsert, multi, writeConcern, collation } )

参数

参数 描述
db_name 数据库名
collection_name 集合名
query 必选项,是设置更新的文档的条件
update 为更新操作符
upsert 为布尔型可选项,表示如果不存在 update 的记录,是否插入这个新的文档。true 为插入;默认为 false,不插入
multi 也是布尔型可选项,默认是 false,只更新找到的第一条记录。如果为 true,则把按条件查询出来的记录全部更新
writeConcem 表示出错级别
collation 指定语言

说明

使用 update 更新记录时,是将后面的字段的值增加指定的值或者减少指定的值。

技术细节

$inc 可以接收正的和负的值:

  1. 如果指定的字段不存在则 $inc 操作符创建这个字段并且设置这个字段的值为指定的在值;
  2. 使用 $inc 操作符的字段的值如果值为 null 则将会报异常;
  3. $inc 操作符是原子性的在单个文档中;

案例

我们首先,使用 mongo 命令,连接上数据库,具体命令如下:

mongo

如下图所示:

61_mongodb update inc修改器.png

现在,我们使用 use 命令,切换到 haicoder 数据库,具体命令如下:

use haicoder

现在,我们使用 insertMany 插入多条记录,具体命令如下:

db.haicoder.insertMany([{"name":"haicoder", "age":109, "date":110}, {"name":"cpp", "age":120, "date":130}, {"name":"golang", "age":200, "date":150}])

执行完毕后,此时,如下图所示:

62_mongodb update inc修改器.png

我们看到,此时提示我们成功插入了三条记录,现在,我们使用 find 查询当前的所有记录,具体命令如下:

db.haicoder.find()

执行完毕后,此时,如下图所示:

63_mongodb update inc修改器.png

现在,我们使用 update 修改 age 字段,具体命令如下:

db.haicoder.update({"_id" : ObjectId("5f63026d8117cc4a9961d0c0")}, {"$inc" :{age:10}})

执行完毕后,我们再次使用 find 查看记录,如下图所示:

64_mongodb update inc修改器.png

我们看到,我们将 age 字段的值增加了 10,现在,我们再次使用 inc 修改符将 date 减少 10,具体命令如下:

db.haicoder.update({"_id" : ObjectId("5f63026d8117cc4a9961d0c1")}, {"$inc" :{date:-10}})

执行完毕后,我们再次使用 find 查看记录,如下图所示:

65_mongodb update inc修改器.png

我们看到,我们将 date 字段减少了 10,同时,我们还可以同时修改两个字段的值,具体命令如下:

db.haicoder.update({"_id" : ObjectId("5f63026d8117cc4a9961d0c2")}, {"$inc" :{age:20, date:-20}})

执行完毕后,我们再次使用 find 查看记录,如下图所示:

66_mongodb update inc修改器.png

我们看到,我们同时修改了 age 字段的值和 date 字段的值。

MongoDB update inc修改器总结

在 MongoDB 中,通过 update 更新记录时,其中的 inc 修改器用于将一个字段的值增加或者减少,类似于编程中的自增或者自减操作。