MongoDB刪除文件
MongoDB最早刪除文件使用的是remove()
方法,後來官方把它移除了因為remove()
並不會真正釋放空間。需要繼續執行db.repairDatabase()
來回收磁碟空間.
我去MongoDB的中文社群看了一下,關於刪除方法的文件還沒有整理,所以我只能去檢視官方文件的,翻譯水平有限還請路過的大神指正。貼上官方地址 document
MongoDB刪除文件的方法主要有一下兩個
1.deleteOne()語法
db.collection.deleteOne( <filter>, { writeConcern: <document>, collation: <document> } )
-
<filter>
使用查詢運算子指定刪除條件 - writeConcern 是丟擲異常的級別
- collation 則是查詢結果的排序規則,詳細請看這裡Collation Document .
deleteOne()
只能刪除匹配到的第一條記錄,即使匹配到多個也只刪除一條
> db.users.find() { "_id" : ObjectId("5c77461437955b945af7321f"), "name" : "緣來是你", "age" : 27, "gender" : "male", "is_active" : 1 } { "_id" : ObjectId("5c77499137955b945af73220"), "name" : "tom", "age" : 20, "gender" : "male" } { "_id" : ObjectId("5c77499137955b945af73221"), "name" : "Linda", "age" : 18, "gender" : "female" } { "_id" : ObjectId("5c77731d37955b945af73222"), "name" : "Hanmeimei", "age" : 17, "gender" : "female" } { "_id" : ObjectId("5c7774b736397a1c0aa425ea"), "name" : "Jack", "age" : 28, "gender" : "male", "is_active" : 1 } { "_id" : ObjectId("5c7774b736397a1c0aa425eb"), "name" : "Lucy", "age" : 28, "gender" : "female", "is_active" : 1 } { "_id" : ObjectId("5c77968d96c95d22dfe8b45f"), "name" : "Lucys", "is_active" : 0 } > db.users.deleteOne({"age": {$gt: 25}}) { "acknowledged" : true, "deletedCount" : 1 } > db.users.find() { "_id" : ObjectId("5c77499137955b945af73220"), "name" : "tom", "age" : 20, "gender" : "male" } { "_id" : ObjectId("5c77499137955b945af73221"), "name" : "Linda", "age" : 18, "gender" : "female" } { "_id" : ObjectId("5c77731d37955b945af73222"), "name" : "Hanmeimei", "age" : 17, "gender" : "female" } { "_id" : ObjectId("5c7774b736397a1c0aa425ea"), "name" : "Jack", "age" : 28, "gender" : "male", "is_active" : 1 } { "_id" : ObjectId("5c7774b736397a1c0aa425eb"), "name" : "Lucy", "age" : 28, "gender" : "female", "is_active" : 1 } { "_id" : ObjectId("5c77968d96c95d22dfe8b45f"), "name" : "Lucys", "is_active" : 0 }
我們執行命令deleteOne()刪除age>25的使用者,結果只刪除了第一條文件
2.deleteMany()語法
db.collection.deleteMany( <filter>, { writeConcern: <document>, collation: <document> } )
deleteMany()
方法的用法與deleteOne()
一樣,只是刪除所有符合條件的文件