本篇要解決的問題
在 上一篇,我們學習了 MongoDB Shell 的 find
,來查詢資料,有了 find 的基礎,會發現這一篇的 delete、update,命令很相像,基本上把 find 換成 update 就可以了。
deleteOne 刪除單一 document
db.<Collection名稱>.deleteOne(指定條件) db.books.deleteOne({ _id: ObjectId('65bba54cee4e5a09b7d87f3f') })
成功的話會顯示以下訊息:
{ acknowledged: true, deletedCount: 1 }
deleteMany 刪除多個 documents
db.<Collection名稱>.deleteMany(指定條件) db.books.deleteMany({ rating: { $gte: 8 } })
成功的話會顯示以下訊息:
{ acknowledged: true, deletedCount: 2 }
updateOne 更新單一 document
$set 更新值
db.<Collection名稱>.updateOne(指定條件, { $set: { 字段: 值, ... } }) db.books.updateOne( { _id: ObjectId('65bba54cee4e5a09b7d87f3f') }, { $set: { rating: 10, pages: 1000 } } )
成功的話會顯示以下訊息:
{ acknowledged: true, insertedId: null, matchedCount: 1, modifiedCount: 1, upsertedCount: 0 }
$inc 增加、減少原有的值
比方原本我們的 pages 是 500,當執行了以下:
db.books.updateOne( { _id: ObjectId('65bba54cee4e5a09b7d87f3f') }, { $inc: { pages: 10 } } )
pages 就會是 +10,變成 510。
如果改寫成:
{ $inc: { pages: -10 } }
pages 就會是 -10,變成 490。
$pull 刪除陣列裡的值
比方原本我們的 genres 是 ["aaa", "bbb"]
,當執行了以下:
db.books.updateOne( { _id: ObjectId('65bba54cee4e5a09b7d87f3f') }, { $pull: { genres: "aaa" } } )
genres 的值就會變成 ["bbb"]
。
$push 增加陣列裡的值
比方原本我們的 genres 是 ["aaa", "bbb"]
,當執行了以下:
db.books.updateOne( { _id: ObjectId('65bba54cee4e5a09b7d87f3f') }, { $push: { genres: "ccc" } } )
genres 的值就會變成 ["aaa", "bbb", "ccc"]
。
以上是一次只增加一個值到陣列,如果想一次增加多個值,就用 $each
:
db.books.updateOne( { _id: ObjectId('65bba54cee4e5a09b7d87f3f') }, { $push: { genres: { $each: ["ddd", "eee", "fff"] } } } )
updateMany 更新多個 documents
db.<Collection名稱>.updateMany(指定條件, { $set: { 字段: 值, ... } }) db.books.updateMany( { author: "August" }, { $set: { rating: 10, pages: 1000 } } )
成功的話會顯示以下訊息:
{ acknowledged: true, insertedId: null, matchedCount: 2, modifiedCount: 2, upsertedCount: 0 }
Summary

Article Name
MongoDB 學習筆記 - MongoDB Shell:CRUD 中的 Delete、Update
Description掌握 MongoDB Shell 中 的Delete 和 Update 操作。從刪除單一或多個 documents 到更新字段值,增加或減少數值,以及操作陣列,本筆記文涵蓋實際操作示例。
August
August
Let's Write
Let's Write
https://letswritetw.github.io/letswritetw/dist/img/logo_512.png
