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

相关推荐
疯狂打码的少年4 小时前
【数据库技术】关系模型基本概念(关系/属性/元组/键)
java·服务器·数据库·笔记
普马萨特6 小时前
实体与位置关系的数据从哪里来:获取、治理与仍待解决的问题
网络·数据库
醉颜凉6 小时前
MySQL 8 忘记 root 密码?这两种方法帮你轻松解决
数据库·mysql·adb
RestCloud7 小时前
集成链路监控体系搭建:接口调用、数据流转与异常告警全覆盖
数据库·数据安全·ipaas·api管理·数据监控·集成平台·api 治理
xxwl5857 小时前
MySQL 基础学习笔记
数据库·mysql
SKH.7 小时前
Linux软件编程(6)线程间通信
java·开发语言·数据库
Rain的Java大神之路8 小时前
PC版网站被狂刷怎么处理
java·数据库·redis·后端·mysql·web安全·运维开发
闻哥8 小时前
小表驱动大表——SQL查询优化的核心原则(深度剖析+流程图)
数据库·sql·流程图
cmes_love8 小时前
港股Level2历史数据:逐笔成交与分钟线
数据库·oracle
自由能燃气设备8 小时前
燃气热水锅炉/全预混低氮冷凝锅炉哪个品牌好?哪家好?6大商用品牌横评
大数据·数据库·人工智能