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