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对写操作进行确认的级别。

相关推荐
清风徐来QCQ3 分钟前
redis 面试可能会问的问题
数据库·redis·面试
这辈子谁会真的心疼你4 分钟前
如何修改照片定位信息?详细介绍两个方法
数据库
Oueii7 分钟前
构建一个基于命令行的待办事项应用
jvm·数据库·python
小瓦码J码18 分钟前
PostgreSQL pg_stat_statements 性能分析利器(二)全表扫描导致物理IO爆炸
数据库·postgresql
2501_9454235423 分钟前
如何为开源Python项目做贡献?
jvm·数据库·python
2401_8845632425 分钟前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
清风徐来QCQ26 分钟前
Redis以及如何在springboot中使用
数据库·redis·缓存
编程饭碗35 分钟前
【Mysql日期字段】
数据库·mysql
Thomas.Sir36 分钟前
精通 MySQL 面试题
数据结构·数据库·mysql
上海云盾-小余42 分钟前
应用层漏洞实战防护:SQL 注入、XSS、文件上传漏洞一站式加固方案
数据库·sql·xss