# 🏅 Day 5 - MongoDB 基本操作:修改、刪除
### 修改
#### 修改單筆資料
`db.collection.updateOne(filter, update)`
> 第一個參數透過設定符合的屬性找出要修改的資料,若第一個參數帶入空物件 `{}`,則會選取全部資料的第一筆資料
> 第二個參數放入要修改的屬性,需先加上 `$set` 物件,並在此物件中帶入要修改的物件屬性
>
```shell
db.collection.updateOne(
{
id: 1
},
{
$set: {
user: 'Tom'
}
}
)
```
→ 修改 `id` 是 `1` 的資料的 `user` 值
#### 修改多筆資料
`db.collection.updateMany(filter, update)`
```shell
db.collection.updateMany(
{
rating: 3
},
{
$set: {
rating: 4
}
}
)
```
→ 修改全部 `rating` 是 `3` 的資料的 `rating` 值
#### 取代整筆資料
`db.collection.replaceOne(filter, update)`
```shell
db.collection.replaceOne(
{
id: 1
},
{
$set: {
user: 'Tommy',
orderTimes: 3
}
}
)
```
→ 將 `id` 是 `1` 的資料整筆取代為 `{ user: 'Tommy', orderTimes: 3 }`
### 刪除
#### 刪除一筆資料
`db.collection.deleteOne(filter)`
> 只刪除一筆符合條件的資料
```shell=
db.collection.deleteOne(
{
id: 1
}
)
```
→ 刪除 `id` 是 `1` 的資料
#### 刪除多筆資料
`db.collection.deleteMany(filter)`
```shell=
db.collection.deleteMany(
{
rating: 1
}
)
```
→ 刪除所有 `rating` 是 `1` 的資料
#### 刪除全部資料
`db.collection.deleteMany({})`
→ 刪除 collection 裡所有的資料
### 參考資源
- [db.collection.updateOne() — MongoDB Manual](https://www.mongodb.com/docs/v4.4/reference/method/db.collection.updateOne/#mongodb-method-db.collection.updateOne)
- [db.collection.updateMany() — MongoDB Manual](https://www.mongodb.com/docs/v4.4/reference/method/db.collection.updateMany/#mongodb-method-db.collection.updateMany)
- [db.collection.deleteOne() — MongoDB Manual](https://www.mongodb.com/docs/v4.4/reference/method/db.collection.deleteOne/#mongodb-method-db.collection.deleteOne)
- [db.collection.deleteMany() — MongoDB Manual](https://www.mongodb.com/docs/v4.4/reference/method/db.collection.deleteMany/#mongodb-method-db.collection.deleteMany)
- 課程影音「MongoDB Shell 語法教學」
題目
---
延續前一天題目,目前 `orders` collection 應含有以下資料:
```jsonld=
{
room: '豪華雙人房',
price: 3200,
user: 'Tom',
isPaid: true
},
{
room: '高級雙人房',
price: 2800,
user: 'Tom',
isPaid: true
},
{
room: '豪華三人房',
price: 3600,
user: 'Tom',
isPaid: true
},
{
room: '高級雙人房',
price: 2800,
user: 'Tommy',
isPaid: true
},
{
room: '尊爵景觀客房',
price: 4800,
user: 'Tony',
isPaid: false
}
```
依照下方題目敘述寫出相關操作指令
1. 將所有 `room` 是 `高級雙人房` 的資料的 `price` 修改為 `3100`(修改多筆)
2. 將最後一筆的資料的 `isPaid` 修改為 `true`(修改單筆,指定最後一筆的 `_id`)
3. 刪除所有 `user` 是 `Tom` 的資料(刪除多筆)
4. 刪除一筆 `price` 高於 4000 `(> 4000)` 的資料(刪除單筆)
## 回報流程
將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔!
解答位置請參考下圖(需打開程式碼的部分觀看)
![](https://i.imgur.com/vftL5i0.png)
<!-- 解答:
1. db.orders.updateMany(
{
room: '高級雙人房'
},
{
$set: {
price: 3100
}
}
)
2. db.orders.updateOne(
{
_id: ObjectId('...')
},
{
$set: {
isPaid: true
}
}
)
3. db.orders.deleteMany(
{
user: 'Tom'
}
)
4. db.orders.deleteOne(
{
price: {
$gt: 4000
}
}
)
-->
回報區
---
<!--
將答案貼至下方表格內,格式:
| Discord 暱稱 | [CodePen](連結) |
-->
| Discord | CodePen / 答案 |
|:-------------:|:-----------------:|
| xxx | [CodePen]() |
| 2魚. | [CodePen](https://codepen.io/ijrekmsn-the-sans/pen/xxePqMg) |
| 苡安 | [CodePen](https://codepen.io/yi-an-yang/pen/JjVvOgv?editors=0010) |
| shuantt | [CodePen](https://codepen.io/th-tseng/pen/WNWJdrx) |
| Render Lai | [CodePen](https://codepen.io/hsinhui/pen/MWRGQaq)
| Aida | [CodePen](https://codepen.io/ada23410/pen/eYorVvX?editors=0010) |
| Tiya | [CodePen](https://codepen.io/Tiya_blank/pen/zYXjrNa) |
| 群嘉 | [CodePen](https://codepen.io/efzdamnp-the-lessful/pen/LYvmeWM?editors=0010)|
| Lobinda | [CodePen](https://codepen.io/Lobinda/pen/PogeQve?editors=0010)|
| 阿旭 | [CodePen](https://codepen.io/koei-lu/pen/eYorrMM)|
| wei | [CodePen](https://codepen.io/Wei-the-sasster/pen/XWQqqGx?editors=0010)|
| zaoannihao | [CodePen](https://codepen.io/ckhwdvrx-the-solid/pen/yLrjqje) |
| 羽 | [CodePen](https://codepen.io/lingling-Syu/pen/xxeWvQN) |
| Chia Pin | [CodePen](https://codepen.io/joker-cat/pen/eYorLJE) |
| 圈圈 | [Codepen](https://codepen.io/wjejfczn-the-bold/pen/vYMjzGM) |
| YJ | [Codepen](https://codepen.io/y0000ga/pen/yLrjxQv) |
| Alan | [Codepen](https://codepen.io/l0f0/pen/poBVOOd) |
| kelvinnn | [Codepen](https://codepen.io/is-lin/pen/WNWJJWE) |
| william_hsu | [Codepen](https://codepen.io/william8815/pen/NWmMLyb) |
| Ciel | [Codepen](https://codepen.io/nycteachen/pen/zYXjmex) |
| Theodore | [CodePen]([連結](https://codepen.io/GustavoFringgg/pen/poBVqdw?editors=0010)) |
| tung030374 | [CodePen](https://codepen.io/tung__u/pen/GRLdwXP) |
| YC | [CodePen](https://codepen.io/YCLu/pen/XWQEzKp) |
| ellallu0903 | [CodePen](https://codepen.io/ellallu0903/pen/MWRXYrE) |
| Fabio20 | [CodePen](https://codepen.io/fabio7621/pen/KKYepyB?editors=1010) |
|cho|[CodePen](https://codepen.io/cho195/pen/JjVZXbg)|
|Hank|[CodePen](https://codepen.io/tw1720/pen/gOyKPjp)|
|yiling4054|[CodePen](https://codepen.io/lin010/pen/eYoKVOK?editors=0010)|
| Jean | [CodePen](https://codepen.io/jeanchiang1221/pen/VwNdQpL) |
| Otis | [CodePen](https://codepen.io/humming74/pen/XWQYEPj?editors=1010) |
| runweiting | [CodePen](https://codepen.io/weiting14/pen/RwOJBzY) |
| ej_chuang | [CodePen](https://codepen.io/EJChuang/pen/oNOyQYZ) |
| Thomas | [CodePen](https://codepen.io/ThomasYeh/pen/gOyKZoV) |
| Johlmike | [CodePen](https://codepen.io/johlmike/pen/yLrEZgj) |
| Mei | [Codepen](https://codepen.io/l_umei/pen/ZEZjKVm)
| jenny7532 | [Codepen](https://codepen.io/wei-chen-wu/pen/yLrqRWx)|
| Henry | [CodePen](https://codepen.io/hekman1122/pen/vYMaqRJ?editors=0010) |
| Benson | [CodePen](https://codepen.io/nosneb83/pen/oNOPBGL) |
| 瑀君 | [Codepen](https://codepen.io/yennnnn/pen/GRLXOEE)|
| blp100x | [Codepen](https://codepen.io/blp100/pen/oNOPRem)|
| yoshidc | [CodePen](https://codepen.io/yoshiyyc/pen/JjVmKEg)|
| albertyang3576 | [CodePen](https://codepen.io/albertyang3576/pen/GRLeWKg)|
| Sophiee | [CodePen](https://codepen.io/sophiee2727/pen/BaEbxRQ)|