更新由`update`、`updateOne`、`updateMany`函数完成,总共分为两种更新策略:
(1)只更新指定字段,不影响其它字段
(2)更新指定字段,删除没有指定的字段
基本语法:
```js
db.collection_name.update(
<query>, 更新条件
<update>, 更新操作
{
upsert:<boolean>, 如果为true,当没有匹配的文档时则插入该文档;
如果为false,则不插入,默认为false
multi:<boolean>, 如果为true,则更新符合条件的所有记录,相当于updateMany;
如果为false,则只更新找到的第一条记录,相当于updateOne
默认为 false
writeConcern 抛出异常级别
}
)
```
测试用例:
```sql
> for(let i=1; i<=30; i++) db.goods.insertOne({"_id":i,"name":"apple"+i,"addr":"苹果旗舰店"+i,"contry":"中国"+i,"price":5000+i*100})
{ "acknowledged" : true, "insertedId" : 30 }
> db.goods.find()
{ "_id" : 1, "name" : "apple1", "addr" : "苹果旗舰店1", "contry" : "中国1", "price" : 5100 }
{ "_id" : 2, "name" : "apple2", "addr" : "苹果旗舰店2", "contry" : "中国2", "price" : 5200 }
...
{ "_id" : 30, "name" : "apple30", "addr" : "苹果旗舰店30", "contry" : "中国30", "price" : 8000 }
```
<br/>
**1. 更新指定字段,不影响其它字段**
```sql
# $set 是更新指令,$inc是加法
> db.goods.update({"_id":1}, {$set:{contry:"美国"}, $inc:{price: 900}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.goods.find()
{ "_id" : 1, "name" : "apple1", "addr" : "苹果旗舰店1", "contry" : "美国", "price" : 6000 }
{ "_id" : 2, "name" : "apple2", "addr" : "苹果旗舰店2", "contry" : "中国2", "price" : 5200 }
{ "_id" : 3, "name" : "apple3", "addr" : "苹果旗舰店3", "contry" : "中国3", "price" : 5300 }
```
<br/>
**2. 更新指定字段,没有指定的清除(主键`_id`除外)**
```sql
> db.goods.update({"_id":1}, {contry: "中国"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.goods.find()
{ "_id" : 1, "contry" : "中国" }
{ "_id" : 2, "name" : "apple2", "addr" : "苹果旗舰店2", "contry" : "中国2", "price" : 5200 }
{ "_id" : 3, "name" : "apple3", "addr" : "苹果旗舰店3", "contry" : "中国3", "price" : 5300 }
```
- MySQL
- MySQL是什么
- MySQL环境搭建
- centos7-MySQL8
- windows-MySQL8
- 数据库软件
- sqlyog软件安装
- navicat软件安装
- powerDesigner软件安装
- RDBMS术语
- SQL语句组成
- 数据库系统组成
- 数据库操作
- 数据表操作
- 查询语句
- 基本语法
- 子查询
- 表连接
- 查询语句执行顺序
- 事务
- 事务是什么
- 事务的作用
- 事务的4个特性
- 事务隔离级别
- 事务的实现
- 索引
- 索引的作用
- 索引操作
- 存储引擎
- 备份与恢复
- 视图
- 视图是什么
- 视图的作用
- 创建视图
- 查看视图
- 更改视图
- DML操作视图
- 删除视图
- 存储过程与函数
- 过程与函数是什么
- 存储过程操作
- 定义存储过程
- 调用存储过程
- 查看存储过程
- 删除存储过程
- 修改存储过程
- 函数操作
- 过程与函数区别
- 流程控制
- if语句
- case语句
- while循环语句
- repeat循环语句
- loop循环语句
- 变量
- 处理程序
- 光标
- Redis
- 简介
- 下载与安装
- 命令操作redis数据库
- 通用命令
- 数据操作
- 持久化
- Windows上的持久化操作
- 数据库设计
- 数据库设计过程
- ER模型图
- MongoDB
- MongoDB是什么?
- MongoDB特性
- MongoDB 数据模型
- 安装MongoDB
- MongoDB认证
- Database操作
- Collection操作
- Document操作
- 插入
- 查询
- 更新
- 删除
- buckWrite
- MongoDB索引
- 副本集
- 聚焦分析
- 事务管理
- 写关注
- 读关注