Mongodb的危险操作delete

前言

经常听到各种有趣的新闻,程序员对老板不满,一怒之下删库跑路。或某大厂误操作,把关键数据表删除导致业务停滞几个小时。删库和删表,都是很危险的操作,执行前需要谨慎。否则,轻则需要数据恢复,重则需要引咎辞职甚至锒铛入狱。演绎真实版的从入门到入狱。

数据宝贵,千万不要因为错误的操作,导致致命损失。执行删除操作前,也请反复确认删除的数据是否符合目标。

本文介绍delete操作前,先介绍一些删除操作的经验。

  • 执行delete前,使用find确认删除的数据范围。mongodb删除命令与查找命令find中的过滤器相同。执行删除时,将find替换成remove或deleteMany命令,即可删除目标数据。
  • 删除重要数据前,可以对数据进行预先备份,这样即使错误的删除数据,也可以进行恢复。
  • 优先考虑使用update方法进行数据逻辑删除,需要时进行物理删除。

Mongodb的删除方法

mongodb提供了两种删除方法

//删除多条数据
db.collection.deleteMany()
//删除一条数据
db.collection.deleteOne()

用户可以使用Mongo DB Atlas页面,用户自己的应用程序,Mongodb Compass等数据库客户端执行数据删除程序。

删除集合中所有文档

向deleteMany()方法中传递一个空的过滤器,即可删除所有文档

//删除集合中所有文档
db.collection.deleteMany({},options)//其中options是可选项,用户可以按照需要添加

定义options

{writeConcern:<document>,collation:<document>,hint:<document|string>
}

在下表中列出参数说明

参数

类型

说明

writeConcern

文档类型

可选参数,定义复制集中数据提交类型

collation

文档类型

可选参数,指定字符序

hint

文档类型或字符串

指定删除文档时用到的索引

按指定条件删除文档

通过向过滤器中指定查询条件,删除查询过滤出来的数据。

//删除符合查询条件的文档
db.collection.deleteMany({<field1>: <value>})

删除一条文档记录

使用deleteOne方法,删除一条记录

//删除符合条件的一条记录
db.collection.deleteOne({<field1>:<value1>},options)

这里,相信很多用户又会有一些疑问,如果使用的过滤器能够查询出来多条记录,怎样确定删除的第一条记录?当没有指定排序时,mongodb默认的数据排序是按照数据插入时的顺序排序。使用不加排序的find名利查找出来的第一条记录,就是被删除的记录。删除之前,需要确定好第一条记录是哪一条。最好使用文档的_id字段等能够唯一确定文档的字段来删除一条数据,避免产生不必要的错误。

定义options

{writeConcern:<document>,collation:<document>,hint:<document|string>
}

在下表中列出参数说明

参数

类型

说明

writeConcern

文档类型

可选参数,定义复制集中数据写入策略

collation

文档类型

可选参数,指定字符序

hint

文档类型或字符串

指定删除文档时用到的索引

写入策略writeConcern

复制集指定删除数据时的数据写入策略。如果从节点返回主节点的时间多于100毫秒,删除报错,

//三节点的复制集合中,设置写入策略为majority从节点等待时间为100
db.orders.deleteMany({"client": "Crude Traders Inc."
}, {writeConcert: { w: "majority", wtimeout: 100}
})WriteConcernError({"code" : 64,"errmsg" : "waiting for replication timed out","errInfo" : {"wtimeout" : true,"writeConcern" : {    // Added in MongoDB 4.4"w" : "majority","wtimeout" : 100,"provenance" : "getLastErrorDefaults"}}
})

索引

删除数据时,索引不会删除。当索引与集合中数据差异较大时,需要重建索引,减少索引所在空间,提高索引效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解JVM虚拟机第三十八篇:JVM中OOM的说明和举例

😉😉 欢迎加入我们的学习交流群呀! ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring、Security、Docker、Grpc、消息中间件、Rpc、SpringCloud等等很多应用和源码级别高质量视频和笔记资料,你想学的我们这里都有! 🥭🥭3:…

【笔记】书生·浦语大模型实战营——第四课(XTuner 大模型单卡低成本微调实战)

【参考&#xff1a;tutorial/xtuner/README.md at main InternLM/tutorial】 【参考&#xff1a;(4)XTuner 大模型单卡低成本微调实战_哔哩哔哩_bilibili-【OpenMMLab】】 总结 学到了 linux系统中 tmux 的使用 了解了 XTuner 大模型微调框架的使用 pth格式参数转Hugging …

C++学习笔记——SLT六大组件及头文件

目录 一、C中STL&#xff08;Standard Template Library&#xff09; 二、 Gun源代码开发精神 三、 实现版本 四、GNU C库的头文件分布 bits目录 ext目录 backward目录 iostream目录 stdexcept目录 string目录 上一篇文章&#xff1a; C标准模板库&#xff08;STL&am…

原生js实现拖拽效果

<!DOCTYPE html> <html> <head> <style> #mydiv { width: 200px; height: 200px; background-color: red; position: absolute; cursor: move; } </style> | </head> <body> <div id"mydiv">拖拽我…

什么是信噪比

大家好&#xff0c;今天给大家介绍什么是信噪比&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 “信噪比”是电子技术中经常用到的一个词组&#xff0c;知道它的确切含义有一定意…

vivado18.3和modelsim关联

版本关系 首先明确Modelsim与Vivado的联合仿真需要版本号相匹配&#xff0c;Xilinx官方文档UG973中给出了所有版本的Vivado兼容Modelsim的版本情况 Vivado版本号Modelsim版本号Vivado Design Suite 2022.2Mentor Graphics ModelSim DE (2022.2)Vivado Design Suite 2022.1Men…

【前端性能优化】如何取消http请求

文章目录 需要取消http请求的3种经典场景原生XMLHttpRequest取消http请求fetch取消http请求axios取消http请求哪些情况需要取消HTTP请求取消http请求能带来哪些性能提升 需要取消http请求的3种经典场景 场景一&#xff1a;有一个实时搜索功能&#xff0c;每当用户输入内容改变的…

app开发——安卓native开发思路记录

我们知道app开发目前有三种方式&#xff0c;第一种是webapp&#xff0c;第二种是hybird app&#xff0c;第三种是native app。 而native-app就是安卓原生app&#xff0c;这里记录一下安卓原生开发的基本思路。 首先&#xff0c;安卓原生开发虽然在当今时代不是那么常见了&…

python爬虫小练习——爬取豆瓣电影top250

爬取豆瓣电影top250 需求分析 将爬取的数据导入到表格中&#xff0c;方便人为查看。 实现方法 三大功能 1&#xff0c;下载所有网页内容。 2&#xff0c;处理网页中的内容提取自己想要的数据 3&#xff0c;导入到表格中 分析网站结构需要提取的内容 代码 import requests…

[NAND Flash 6.6] NAND FLASH Multi Plane Program(写)操作_multi plane 为何能提高闪存速度

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< Multi Plane 简介 Multi Plane Program 时序图 Multi Plane 提速机理 Multi Plane Program 状态检查 前言 上一篇我们介绍了 NAND FLASH基本编程(写)…

【昕宝爸爸小模块】线程的几种状态,状态之间怎样流转

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…

vue中动态给不同表单赋值

这里的业务是通过关联的 id 发送不同的请求获取表单的数据&#xff0c;然后回显到页面中&#xff0c;整个的页面是由多个表单拼接起来的 点击下一步的时候&#xff0c;获取下一个表单的内容。 // 查询getForm(index) {switch (index) {case 0:this.getFromInfo("inputFor…

图鸟Vue3版本部署

无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 分析原因 这个错误信息表明在 VS Code 终端中尝试运行 pnpm install&#xff0c;但系统无法识别 pnpm 命令。这通常表示 pnpm 这个工具没有被正确安装&#xff0c;或者它的可执行文件所在的路径没有被正确…

故障诊断全家桶,看这一篇就够了,精品力荐!

本期推出故障诊断全家桶&#xff0c;包含传统的分析时频诊断方法&#xff0c;依靠数据分解方法的诊断方法&#xff0c;依靠机器学习的诊断方法。还包含了6种适应度函数随意切换的VMD优化方法&#xff0c;16种数据分解方法&#xff0c;包络谱&#xff0c;包络熵等代码。以及作者…

pgAdmin使用教程(postgresql)

如何使用postgresql 要使用 PostgreSQL 数据库&#xff0c;你可以按照以下步骤进行操作&#xff1a; 安装 PostgreSQL&#xff1a;首先&#xff0c;需要在你的计算机上安装 PostgreSQL 数据库。你可以从 PostgreSQL 官方网站上下载适合你操作系统的安装程序&#xff0c;并按照…

剪映国际版,免费无限制使用

随着抖音的爆火短视频的崛起&#xff0c;相信每一个人都感受到了短视频快节奏下的生活洪流。 现如今每个人都能成为自己生活的记录者&#xff0c;每一个人都有掌握着剪辑的基本技能。而剪映就是很多人都会使用的剪辑软件。 相对于PR、AE等剪辑软件来说&#xff0c;作为一款国…

Python如何操作RabbitMQ实现direct关键字发布订阅模式?有录播直播私教课视频教程

direct关键字发布订阅模式 基本用法 发布者 import json from rabbitmq import pika import rabbitmq# 建立连接 credentials rabbitmq.PlainCredentials(zhangdapeng,zhangdapeng520, ) # mq用户名和密码 connection_target rabbitmq.ConnectionParameters(host127.0.0.…

【金猿CIO展】步长制药信息化管理与建设中心总经理束炼:IT部门既要懂技术,也要懂业务...

‍ 束炼 本文由步长制药信息化管理与建设中心总经理束炼撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着数字化转型的浪潮席卷各行各业&#xff0c;中国数字经济已进入快速发展阶…

水浒传之Screen的传奇-Linux/FreeBSD终端下的多窗口复用

缘起 梁山泊大厅 宋江&#xff08;梁山泊头领&#xff09;&#xff1a;各位兄弟&#xff0c;今日我们梁山好汉齐聚一堂&#xff0c;可是有大事要商量。 李逵&#xff08;黑旋风&#xff09;&#xff1a;哥哥&#xff0c;是不是又要有新的任务了&#xff1f;这次我们打谁&am…

架设一台NFS服务器

1、开放/nfs/shared目录&#xff0c;供所有用户查询资料 2、开放/nfs/upload目录&#xff0c;为192.168.xxx.0/24网段主机可以上传目录&#xff0c; 并将所有用户及所属的组映射为nfs-upload,其UID和GID均为210 3、将/home/tom目录仅共享给192.168.xxx.xxx这台主机&#xf…