MongoDB CRUD操作:删除文档

MongoDB CRUD操作:删除文档

文章目录

可以使用下面的方式删除MongoDB集合的文档:

  • 使用编程语言提供的驱动程序,在应用中调用API进行删除。
  • 使用MongoDB Atlas UI删除文档。
  • 使用MongoDB Compass、mongosh。
  • 使用其他第三方工具。

下面使用mongosh的删除方法:

  • db.collection.deleteOne()
  • db.collection.deleteMany()

对删除操作进行说明。

使用下面的脚本创建inventory集合,下面的例子会使用inventory集合:

js 复制代码
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.collection.deleteMany()方法传递一个空的过滤文档 {}可删除集合中的所有文档。

下面的示例删除inventory集合中的所有文档:

js 复制代码
db.inventory.deleteMany({})

该方法将返回操作状态的文档。

删除符合条件的所有文件

可以为db.inventory.deleteMany()指定一个过滤条件文档来删除所有符合条件的文档。

可以在条件文档中使用<field>:<value>表达式来指定等式条件:

js 复制代码
{ <field1>: <value1>, ... }

查询过滤文档可以使用查询运算符来指定条件,格式如下:

js 复制代码
{ <field1>: { <operator1>: <value1> }, ... }

要删除与删除条件匹配的所有文档,可将筛选器参数传递给deleteMany()方法,下面的示例从inventory集合中删除status字段等于"A"的所有文档:

js 复制代码
db.inventory.deleteMany({ status : "A" })

该方法返回一个包含操作状态的文档。

删除第一个符合条件的文档

使用db.collection.deleteOne()方法最多只能删除与指定过滤器匹配的单个文档(即使有多个文档与指定过滤器匹配)。

下面的示例删除了status"D"的第一个文档:

js 复制代码
db.inventory.deleteOne( { status: "D" } )

## 在MongoDB Atlas中删除文档

在 MongoDB Atlas UI 中,一次只能删除一个文档。要一次删除多个文档,可以使用mongosh或MongoDB驱动程序连接到Atlas部署,并按照上面的示例进行操作。

下面的示例使用了sample_mflix样本数据集。在MongoDB Atlas中进行文档删除可以按照下面的步骤进行操作:

  1. 打开集合

    • 打开MongoDB Atlas UI,点击侧边栏的Database
    • 找到对应的数据库实例,点击Browse Collections
    • 在左侧的导航面板选择sample_mflix数据库
    • 在左边的导航面板选择movies集合
  2. 指定文档的过滤条件

    可选的,可以给Field字段为文档指定一个过滤条件,用于搜索符合条件的文档。

    将下面的查询条件文档拷贝到搜索栏的Filter 字段,然后点击Apply

    js 复制代码
    { genres: "Action", rated: { $in: [ "PG", "PG-13" ] } }

    查询条件返回sample_mflix.movies集合中genres字段等于Action并且rated等于PGPG-13的文档。

  3. 删除文档

    对于要删除的文档,将鼠标悬停在该文档上,然后点击右侧出现的垃圾桶图标。

    点击Delete按钮后,MongoDB Atlas 会标记要删除的文档,并要求确认。

    单击Delete确认你的选择。

删除行为

索引

删除操作不会删除索引,即使删除集合中的所有文档也不会删除索引。

原子性

在MongoDB中,单个文档的写操作具有原子性。

写确认

通过写关注,可以指定MongoDB对写操作进行确认的级别。

相关推荐
新知图书9 分钟前
MySQL用户授权、收回权限与查看权限
数据库·mysql·安全
文城52119 分钟前
Mysql存储过程(学习自用)
数据库·学习·mysql
沉默的煎蛋25 分钟前
MyBatis 注解开发详解
java·数据库·mysql·算法·mybatis
呼啦啦啦啦啦啦啦啦26 分钟前
【Redis】事务
数据库·redis·缓存
HaoHao_01027 分钟前
AWS Serverless Application Repository
服务器·数据库·云计算·aws·云服务器
C语言扫地僧42 分钟前
MySQL 事务及MVCC机制详解
数据库·mysql
小镇cxy1 小时前
MySQL事物,MVCC机制
数据库·mysql
书生-w1 小时前
Redis Windows 解压版安装
数据库·windows·redis
猿小飞1 小时前
redis 5.0版本和Redis 7.0.15的区别在哪里
数据库·redis·缓存
雾里看山1 小时前
【MySQL】 库的操作
android·数据库·笔记·mysql