# 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') ```