# 🏅 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)|