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/