mongoDB 方法 -- 刪除文檔 delete /remove


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 行為表現

  1. 對分片集合的刪除操作必須包含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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM