删除方法

db.collection.deleteOne()
删除单条文档
db.collection.deleteMany()
删除多条文档
db.collection.remove()
删除单条或多条文档

deleteOne() 语法格式

db.collection.deleteOne(
<filter>,
{
writeConcern: <document>,
collation: <document>,
hint: <document|string> // Available starting in MongoDB 4.4
}
)
  • filter:删除文档的条件,有点像 Mysql 的 where 条件
  • hint:指定查询的索引

deleteMany() 语法格式

db.collection.deleteMany(
<filter>,
{
writeConcern: <document>,
collation: <document>
}
)

remove() 语法格式

语法一

db.collection.remove(
<query>,
<justOne>
)

语法二

db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>
}
)

参数说明

  • query/filter:使用查询运算符指定删除条件,要删除集合中的所有文档,传递一个空文档 ({}) 就行
  • justOne:可选项,true,删除第一个满足删除条件的文档,默认 false,删除所有满足条件的文档
  • writeConcern:可选项,设置抛出异常的级别(比较复杂,用到再详解)
  • collation:指定用于操作的排序规则(比较复杂,用到再详解)

重点

删除文档是永久性删除,不能撤销也不能恢复

插入数据

db.inventory.insertMany( [
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "P" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" },
] );

为了后面的栗子用的

删除所有文档

db.inventory.remove({}) 

db.inventory.deleteMany({}) 

如果是 deleteOne() 只传 {} 呢?

db.inventory.deleteOne({})

只删除集合中第一条文档

删除指定条件的文档

db.inventory.deleteMany({ status : "A" })

等价写法

db.inventory.remove({status:"A"})

如果是 deleteOne() 呢?

db.inventory.deleteOne({status:"A"})

status 为 “A” 的文档有两条,但只会删除匹配到的第一条

条件删除

删除 qty 字段值大于 50 的文档

db.inventory.remove( { qty: { $gt: 50 } } 

删除匹配 h 大于 8.5 的第一个文档

db.inventory.remove( { "size.h" : { $gt : 8.5 } } , { justOne : true } )

删除操作的重点

  • 删除文档不会删除索引
  • 所有操作在单个文档级别上都是原子性的

以下方法也可以从集合中删除文档

  • db.collection.findOneAndDelete()

  • db.collection.findAndModify()

  • db.collection.findAndModify()

  • db.collection.bulkWrite()

更多栗子后面用到再补充

最新文章

  1. 【转】IP协议详解之子网寻址、子网掩码、构造超网
  2. 使用while循环语句和变量输出九九乘法表
  3. paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结.
  4. vim不保存退出
  5. 使用arm开发板搭建无线mesh网络(二)
  6. table显示json数据传递
  7. JSP中用include标签动态引入其它文件报错
  8. eclipse 和myEclipse 项目导入
  9. HDU 4940(杭电更多的学校#7 1006) Destroy Transportation system(到处乱混)
  10. ASP.NET如何通过后台数据库提供的链接播放视频(不使用外置插件)
  11. Spring MVC中使用POI导出Word
  12. zTree根据json选中节点,并且设置其他节点不可选
  13. React Native之ScrollView控件详解
  14. port bridge enable命令导致的环路
  15. 【转】tars源码漫谈第1篇------tc_loki.h (牛逼哄哄的loki库)
  16. Glide终于解决了同时绑定多个webp格式图片的问题
  17. word标题自动编号
  18. vue-loader是什么?使用它的用途有哪些?
  19. 【RFT】【环境配置】Mac
  20. Java-Runoob-高级教程-实例-方法:10. Java 实例 – 标签(Label)

热门文章

  1. C语言-内存函数的实现(一)之memcpy
  2. KMP(梅开三度之数据结构详解版
  3. 1049 Counting Ones
  4. hdu2870暴力或者dp优化
  5. POJ 2516 基础费用流
  6. UVA11100旅行(大包装小包,问最少多少个包)
  7. Caddy-基于go的微型serve用来做反向代理和Gateway
  8. .NET并发编程-TPL Dataflow并行工作流
  9. PHP 判断当前日期是否是法定节假日或者休息日
  10. MySQL字段类型最全解析