MongoDB 基础教程

MongoDB 高级教程

MongoDB 笔记

MongoDB 删除数据(文档)的操作方法详解


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 } }
)