MongoDB 删除文档主要使用 db.collection.remove()
、db.collection.deleteOne()
或 db.collection.deleteMany()
。
删除文档
remove 方法
语法如下:
db.collection.remove(
<query>,
<justOne>
)
完整形式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
参数各选项意义如下:
参数 | 类型 | 描述 | 备注 |
---|---|---|---|
query | document | 要删除的匹配条件,文档形式。 | |
justOne | boolean | 可选项,设置 true 时,限制只删除匹配的一条,默认是 false。 | |
writeConcern | document | 可选项,针对删除操作的性能和安全进行设置,让用户根据业务权衡。 | |
collation | document | 可选项,指定用于操作的 collation。collation 允许用户指定特定于语言的字符串规则,例如大小写和重音标记等的规则。 | 3.4 版本开始支持 |
删除所有文档,传入空 {} 即可,示例如下:
-> db.products.remove( {} )
删除符合条件的文档,如 qty 大于 20 的文档:
-> db.products.remove( { qty: { $gt: 20 } } )
也可以覆盖默认的 writeConcern,示例如下:
-> db.products.remove(
{ qty: { $gt: 20 } },
{ writeConcern: { w: "majority", wtimeout: 5000 } }
)
删除指定 _id 的文档:
-> db.products.remove( { "_id" : ObjectId("5f981f0bcecac65b9d4da41a") } )
deleteOne() 方法
顾名思义,删除单个文档的操作方法,语法如下:
db.collection.deleteOne(
<filter>,
{
writeConcern: <document>,
collation: <document>,
hint: <document|string>
}
)
参数各选项意义如下:
参数 | 类型 | 描述 | 备注 |
---|---|---|---|
filter | document | 要删除的匹配条件,文档形式。 | |
justOne | boolean | 可选项,设置 true 时,限制只删除匹配的一条,默认是 false。 | |
writeConcern | document | 可选项,针对删除操作的性能和安全进行设置,让用户根据业务权衡。 | |
collation | document | 可选项,指定用于操作的 collation。collation 允许用户指定特定于语言的字符串规则,例如大小写和重音标记等的规则。 | 3.4 版本开始支持 |
hint | document | 可选项,采用文档或字符串的形式指定适用于查询表达式的索引,如果索引不存在,则报错。 | 4.4 版本开始支持 |
删除指定 _id 的示例:
-> db.products.deleteOne( { "_id" : ObjectId("5f981f0b945c17df969ea7d0") } )
如果删除成功,输出类似如下:
{ "acknowledged" : true, "deletedCount" : 1 }
deleteMany() 方法
MongoDB 也提供了专门的批量删除方法 db.collection.deleteMany()
。
语法如下:
db.collection.deleteMany(
<filter>,
{
writeConcern: <document>,
collation: <document>
}
)
批量删除示例如下:
-> db.myColl.deleteMany(
{ category: "cafe", status: "A" },
{ collation: { locale: "fr", strength: 1 } }
)