更新由`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索引
- 副本集
- 聚焦分析
- 事務管理
- 寫關注
- 讀關注