---
tags: Node.js 直播班 - 2023 春季班
---
# 🏅 Day 9 - Mongoose 修改/刪除
延續前兩天的每日任務,須先建立 Schema、Model 後,再透過 Model 執行修改、刪除 document 等動作
針對 Model 修改、刪除有多個方式(可參考[文件](https://mongoosejs.com/docs/api/model.html)),在此列出其中幾個方式
### Mongoose 修改
#### findByIdAndUpdate
修改單筆 ID document
寫法為:
```javascript
const Room = mongoose.model('Room', roomSchema);
// 修改特定 Id 的 document
Room.findByIdAndUpdate("621e45063ff3c8af575a7498", {
"name": "海景雙人房"
}) // id, update
```
需分別帶入參數 id,以及需修改的欄位
#### updateOne()
修改單筆的特定條件之 document
```javascript
const Room = mongoose.model('Room', roomSchema);
// 修改特定條件的第一筆 document
Room.updateOne(
{
"name": "海景雙人房"
}, {
"price": 4500
})
```
也可使用 **updateMany()** 修改多筆 documents
### Mongoose 刪除
#### deleteMany()
```javascript
// 刪除所有 rooms collection 中的 documents
Room.deleteMany({})
// 刪除符合特定條件的多個 documents
Room.deleteMany({rating: {$lt: 3}})
```
#### findByIdAndDelete()
```javascript
// 刪除特定 ID 的 documents
Room.findByIdAndDelete("621e45063ff3c8af575a7498") // id
```
帶入參數 ID,為 `findOneAndDelete({_id: id})` 的簡寫
### 參考資源
- [Mongoose v6.2.10: Model](https://mongoosejs.com/docs/api/model.html)
課程影音
- 「deleteMany() 刪除全部房型」
- 「刪除單筆 findByIdAndDelete()、更新單筆 findByIdAndUpdate()」
## 題目(將答案寫在 HackMD 並提交至回報區)
延續 Day6 - 7 每日任務,嘗試修改、刪除手搖飲 documents
可下載此[檔案](https://drive.google.com/drive/folders/1oRjCzs3OajeUXVroNO6QS7fNomO1hwZ0?usp=sharing)測試是否可正確更新、刪除單筆資料
1. 尋找一筆 document 並將 `ice` 改為 `去冰`,`sugar` 改為 `半糖`
```javascript
```
2. 以 ID 尋找一筆 document 並將其刪除
```javascript
```
3. 刪除全部 documents
```javascript
```
## 回報流程
將答案連結貼至底下回報就算完成了喔!
解答位置請參考下圖(需打開程式碼的部分觀看)

<!-- 解答:
1.尋找一筆 document 並將 `ice` 改為 `去冰`,`sugar` 改為 `半糖`
Drink.findOneAndUpdate({ name: "鮮奶茶" }, {
"ice": "去冰",
"sugar": "半糖"
})
Drink.findByIdAndUpdate("...", {
"ice": "去冰",
"sugar": "半糖"
})
// 或是 updateOne() 也可以
2. 以 ID 尋找一筆 document 並將其刪除
Drink.findByIdAndDelete("62559f3bef2d96ec6556bd1e")
3. 刪除全部 documents
Drink.deleteMany({})
-->
回報區
---
| 報數 | 組別/Discord 名字 | Codepen/HackMD/其他回饋 |
|:----:|:-------------------:|:---------------------------------------------------------------------------------------------------------------------------------:|
| 1 | 北 10 組 / Benson | [Github Benson - Day 9](https://github.com/ioveasdkre/HexschoolOperation/tree/main/NodejsEnterpriseClass/day40-tasks/day9/app.ts) |
| 2 | 北 8 組 / Zhao Chen | [GitHub - Day 9](https://github.com/zhao1995chen/NodejsEnterpriseClass/blob/master/daily-task/day9/server.ts) |
| 3 | 北 1 組 / PittWu | [Blog Post - Day 9](https://pitt-wu-blog.vercel.app/docs/day9-mongoose-edit-delete) |
| 4 | 中 3 組 / Wendy | [Notion - Day 9](https://jewel-cellar-80e.notion.site/Day-9-Mongoose-8065b32badcd4930a3e4cdfd5f131f8c) |
| 5 | 中 4 組 / jimkk159 | [HackMD - Day 9](https://hackmd.io/UZWPJ0UKSjKmeRyOeIcwNQ) |
| 6 | 北 5 組 / 圈圈 | [HackMD - Day 9](https://hackmd.io/@j6ccRYgTTEiVcfMfmAELcw/Hy47k4oln) |
| 7 | 北 12 組 / Sam Lin | [GitHub - Day 9](https://github.com/samlin1122/hex-school/blob/main/daily-challenges/day9.js)
| 8 | 北 1 組 / MayYi | [HackMD - Day 9](https://hackmd.io/Kgpn0_qoTTOpVWPWN_xEVA)
| 9 | 北 13 組 / Louisa | [GitHub - Day 9](https://github.com/louisa0416/NodejsEnterpriseClass/blob/master/daily-task/day09/server.js) |
| 10 | 北 13 組 / sasha | [HackMD - Day 9](https://hackmd.io/@sashaye/SkslyRUb3) |
| 11 | 北5組 / albee|[GitHub - Day 9](https://github.com/albee-chang/hexschool-node-dailytask/blob/main/day9/index.md)|
| 12 | 南 1 組 / hiYifang |[HackMD - Day 9](https://hackmd.io/@gPeowpvtQX2Om6AmD-s3xw/HyTyStcV5)|
| 13 | 北 16 組 / 啊培培 |[GitHub - Day 9](https://github.com/LABIBI-LG/Courses/tree/main/hexschool/nodeJS/Live_Course/Daily_Tasks/day9)|