# Day 9 - Mongoose 修改/刪除
###### 2024 Node.js 每日任務 (此份為我的作答)
### Mongoose 修改
#### findByIdAndUpdate
修改單筆 ID 資料 `Model.findByIdAndUpdate(id, update)`
寫法為:
```javascript
const Order = mongoose.model('orderCollection', orderSchema);
// 修改特定 id 的資料
Order.findByIdAndUpdate('621e45063ff3c8af575a7498', {
room: '海景雙人房'
})
```
> 修改 `id: 621e45063ff3c8af575a7498` 的 `room` 欄位資料為 `海景雙人房`
#### updateOne()
修改特定條件的第一筆資料 `Model.updateOne(filter, update)`
```javascript
const Order = mongoose.model('orderCollection', orderSchema);
// 修改特定條件的第一筆資料
Order.updateOne(
{
user: 'Tom'
},
{
isPaid: true
}
)
```
> 修改 `user` 是 `Tom` 的第一筆資料的 `isPaid` 資料為 `true`
也可使用 **updateMany()** 修改多筆資料
### Mongoose 刪除
#### deleteMany()
```javascript
// 刪除所有 orderCollection 中的資料
Order.deleteMany({})
// 刪除符合特定條件的所有資料
Order.deleteMany({ isPaid: true }) // 刪除所有 isPaid 為 true 的資料
```
#### findByIdAndDelete()
```javascript
// 刪除特定 ID 的資料
Order.findByIdAndDelete('621e45063ff3c8af575a7498')
```
> 刪除 id 為 `621e45063ff3c8af575a7498` 的資料
### 參考資源
- [Mongoose: Model](https://mongoosejs.com/docs/api/model.html)
- 課程影音「Mongoose NPM 教學」
題目
---
延續前一天的題目 Room Model,依照下方題目敘述寫出相關操作指令
1. 刪除所有 roomCollection 的資料
```javascript
Room.deleteMany({});
```
2. 新增下方資料
```javascript
Room.insertMany(
{
room: '單人房',
price: 1800,
max: 2,
bathroom: false,
amenities: ['牙刷']
},
{
room: '雙人房',
price: 2800,
max: 2,
bathroom: true,
amenities: ['洗髮精', '沐浴乳', '牙刷']
},
{
room: '四人房',
price: 3600,
max: 4,
bathroom: true,
amenities: ['洗髮精', '沐浴乳', '牙刷']
}
)
```
3. 將單人房(room: '單人房')的 price 資料調整為 1500(updateOne)
```javascript
Room.updateOne({room: '單人房'},{price:1500})
```
4. 將最後一筆資料的 max 改為 6(使用 findByIdAndUpdate 指定最後一筆的 `_id`)
```javascript
Room.findByIdAndUpdate('621e45063ff3c8af575a7498',{max:6})
```
5. 刪除所有 bathroom 是 true 的資料(deleteMany)
```javascript
Room.deleteMany({bathroom:true});
```
6. 刪除第一筆資料(使用 findByIdAndDelete 指定第一筆的 `_id`)
```javascript
Room.findByIdAndDelete('621e45063ff3c8af575a7498')
```