MongoDB(8)- 文档删除操作

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB(8)- 文档删除操作

删除方法


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() 语法格式
  • 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({})

image.png

image.png

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

db.inventory.deleteOne({})

image.png

只删除集合中第一条文档

 

删除指定条件的文档


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

image.png

等价写法

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

 

如果是 deleteOne() 呢?

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

image.png

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

 

条件删除


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

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

image.png

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

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

image.png


删除操作的重点


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

 

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


  • db.collection.findOneAndDelete()
  • db.collection.findAndModify()
  • db.collection.findAndModify()
  • db.collection.bulkWrite()

 

更多栗子后面用到再补充


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
11天前
|
NoSQL MongoDB 数据库
MongoDB 更新文档
10月更文挑战第14天
31 2
|
25天前
|
存储 NoSQL MongoDB
数据的存储--MongoDB文档存储(二)
数据的存储--MongoDB文档存储(二)
45 2
|
10天前
|
SQL NoSQL MongoDB
MongoDB 查询文档
10月更文挑战第15天
12 1
|
25天前
|
存储 NoSQL 关系型数据库
数据的存储--MongoDB文档存储(一)
数据的存储--MongoDB文档存储(一)
42 3
|
10天前
|
NoSQL MongoDB
MongoDB 删除文档
10月更文挑战第15天
22 0
|
11天前
|
存储 JSON NoSQL
MongoDB 插入文档
10月更文挑战第14天
16 0
|
2月前
|
SQL NoSQL Shell
03 MongoDB文档的各种增加、更新、删除操作总结
文章总结了MongoDB中文档的增删改操作,包括插入文档、更新现有文档以及删除文档的具体方法和示例。
67 0
|
4月前
|
存储 NoSQL MongoDB
MongoDB拆分大文档、嵌入文档
【7月更文挑战第6天】
42 0
|
5月前
|
NoSQL BI MongoDB
MongoDB 数据探索之道:查询文档操作详解
MongoDB 数据探索之道:查询文档操作详解
|
5月前
|
NoSQL 安全 MongoDB
MongoDB 数据精简指南:删除文档操作详解
MongoDB 数据精简指南:删除文档操作详解