# 🏅 Day 9 - Mongoose 修改/刪除 ### 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 的資料 2. 新增下方資料 ``` { 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) 4. 將最後一筆資料的 max 改為 6(使用 findByIdAndUpdate 指定最後一筆的 `_id`) 5. 刪除所有 bathroom 是 true 的資料(deleteMany) 6. 刪除第一筆資料(使用 findByIdAndDelete 指定第一筆的 `_id`) ## 回報流程 將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔! 解答位置請參考下圖(需打開程式碼的部分觀看) ![](https://i.imgur.com/vftL5i0.png) <!-- 解答: 1. Room.deleteMany({}) 2. Room.create([{ 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.updateOne({ room: '單人房' }, { price: 1500 }) 4. Room.findByIdAndUpdate('最後一筆的 id', { max: 6 }) 5. Room.deleteMany({ bathroom: true }) 6. Room.findByIdAndDelete('第一筆的 id') --> 回報區 --- <!-- 將答案貼至下方表格內,格式: | Discord 暱稱 | [CodePen](連結) | --> | Discord | CodePen / 答案 | |:-------------:|:-----------------:| | xxx | [CodePen]() | | 苡安 | [hackmd](https://hackmd.io/@L7K9-66lSeagS28AP0_GjQ/rkkHBLilC) | | mei | [CodePen](https://codepen.io/l_umei/pen/poBObBX) | | Jean | [HackMD](https://hackmd.io/7F6ReFsHTEOkqaRnXR8OXA?view) | | Aida | [CodePen](https://codepen.io/ada23410/pen/JjVaRbJ?editors=0010) | | shuantt | [CodePen](https://codepen.io/th-tseng/pen/VwNGKQd) | | 群嘉 | [CodePen](https://codepen.io/efzdamnp-the-lessful/pen/bGJxBzR?editors=0010)| | Chia Pin | [CodePen](https://codepen.io/joker-cat/pen/jORvyzQ) | | wei | [CodePen](https://hackmd.io/@xu7yoa5cSsqaron7h9XhUw/rkB43qoeA) | | jenny7532 | [CodePen](https://codepen.io/wei-chen-wu/pen/qBwMrZj) | | Hank | [CodePen](https://codepen.io/tw1720/pen/vYMzydY) | | 羽 | [CodePen](https://codepen.io/lingling-Syu/pen/MWRqoEx?editors=0010) | | zaoannihao | [CodePen](https://codepen.io/ckhwdvrx-the-solid/pen/qBwMXWr) | |cho|[CodePen](https://codepen.io/cho195/pen/ZEZMXBa)| |tung030374|[CodePen](https://codepen.io/tung__u/pen/mdgGqBm?editors=1010)| |Otis|[CodePen](https://codepen.io/humming74/pen/GRLXzQg?editors=1010)| |Benson|[CodePen](https://codepen.io/nosneb83/pen/jORvmbV)| | 2魚 | [CodePen](https://codepen.io/ijrekmsn-the-sans/pen/poBOYpQ) | | Fabio20 | [CodePen](https://codepen.io/fabio7621/pen/LYvJavb) | | Lobinda | [CodePen](https://codepen.io/Lobinda/pen/ExJeMMj) | | ej_chuang | [CodePen](https://codepen.io/EJChuang/pen/rNbqVwp) | | william_hsu | [CodePen](https://codepen.io/william8815/pen/bGJmdjw) | | Theodore | [CodePen](https://codepen.io/GustavoFringgg/pen/YzMJydZ?editors=0010) | | runweiting | [CodePen](https://codepen.io/weiting14/pen/MWRPmLr) | | Henry | [CodePen](https://codepen.io/hekman1122/pen/wvZYxKg?editors=0010) | | ellallu0903 | [CodePen](https://codepen.io/ellallu0903/pen/MWRzWjG) | | Thomas | [CodePen](https://codepen.io/ThomasYeh/pen/xxeQEPO) | | Tiya | [CodePen](https://codepen.io/Tiya_blank/pen/JjVZaWv) | | Ciel | [CodePen](https://codepen.io/nycteachen/pen/poBQYXZ) | | 瑀君 | [CodePen](https://codepen.io/yennnnn/pen/gOyZgZw)| | yoshidc | [CodePen](https://codepen.io/yoshiyyc/pen/abxPwRX)| | albertyang3576 | [CodePen](https://codepen.io/albertyang3576/pen/YzMMGby?editors=0010)|