1、db.collection.deleteOne()
1.1 作用
從集合中刪除單個文檔
1.2 語法:
db.collection.deleteOne(
<filter>,
{
writeConcern: <document>,
collation: <document>,
hint: <document|string> // Available starting in MongoDB 4.4
}
)
1.3 參數說明:
范圍 | 類型 | 描述 |
---|---|---|
filter | document | 使用查詢運算符指定刪除條件。要刪除集合中的所有文檔,請傳入一個空文檔({ }) |
writeConcern | document | 可選, MongoDB寫入安全機制,如果在事務中運行,請不要為操作明確設置writeConcern |
collation | document | 可選, 允許用戶為字符串比較指定特定於語言的規則,例如字母大寫和重音符號的規則 |
hint | document | 可選,一個文檔或 用於指定支持查詢謂詞索引的字符串,可以是索引文檔或索引名稱字符串 |
過濾條件詳見官網:https://docs.mongodb.com/manual/reference/operator/
collation 詳見官網: https://docs.mongodb.com/manual/reference/collation/#std-label-collation-document-fields
1.4 行為表現
1. 刪除與過濾器匹配的第一個文檔。使用一個字段作為唯一索引的一部分,例如_id,用於精確刪除
2. 對分片集合的刪除操作必須包含shard key或查詢條件中必須包含_id字段
1.5 例子
#刪除 _id 為 ObjectId("563237a41a4d68582c2509da")
db.orders.deleteOne( { "_id" : ObjectId("563237a41a4d68582c2509da") } );
#刪除expiryts大於ISODate("2015-11-01T12:40:15Z") 的第一個文檔
db.orders.deleteOne( { "expiryts" : { $lt: ISODate("2015-11-01T12:40:15Z") } } );
2 db.collection.deleteMany()
2.1 作用:
從集合中刪除所有與匹配的文檔
2.2 語法:
db.collection.deleteMany(
<filter>,
{
writeConcern: <document>,
collation: <document>
}
)
2.3 參數說明 參考 deleteOne()方法
2.4 行為表現
2.5 例子
# 刪除 client = "Crude Traders Inc." 的所有文檔
db.orders.deleteMany( { "client" : "Crude Traders Inc." } );
3 db.collection.remove()
3.1 作用:
從集合中刪除文檔
3.2 語法:
db.collection.remove(
<query>,
<justOne>
)
或
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
3.3 參數說明
范圍 | 類型 | 描述 |
---|---|---|
query | document | 使用查詢運算符指定刪除條件。要刪除集合中的所有文檔,請傳遞一個空文檔({}) |
justOne | boolean | 可選。設置為true,則要只刪除一個文檔。默認值為 false,刪除所有符合刪除條件的文檔 |
writeConcern | document | 可選, MongoDB寫入安全機制,如果在事務中運行,請不要為操作明確設置writeConcern |
collation | document | 可選, 允許用戶為字符串比較指定特定於語言的規則,例如字母大寫和重音符號的規則 |
3.4 行為表現
- 對分片集合的刪除操作必須包含shard key或查詢條件中必須包含_id字段
3.5 例子
#刪除集合中所有文檔
#刪除所有文檔,使用drop()方法刪除整個集合(包括索引),然后重新創建集合並重建索引,可能會更有效
db.bios.remove( { } )
#從集合products中刪除qty大於20的所有文檔
db.products.remove( { qty: { $gt: 20 } } )
# 從副本集的集合products中刪除qty大於20的文檔,並指定writeConcern的"w: majority",wtimeout為5000毫秒。
db.products.remove(
{ qty: { $gt: 20 } },
{ writeConcern: { w: "majority", wtimeout: 5000 } }
)
# 刪除匹配得到的第一條
db.products.remove( { qty: { $gt: 20 } }, true )
#集合中有下列文檔
{ _id: 1, category: "café", status: "A" }
{ _id: 2, category: "cafe", status: "a" }
{ _id: 3, category: "cafE", status: "a" }
# 指定collation
db.myColl.remove(
{ category: "cafe", status: "A" },
{ collation: { locale: "fr", strength: 1 } }
)
官網詳情:
https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/
https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany/
https://docs.mongodb.com/manual/reference/method/db.collection.remove/