整理mongodb文档:删

个人博客

整理mongodb文档:删

求关注,哪儿不足,求大佬们指出,哪儿写的不够通俗易懂跟清晰,也求指出

文章概叙

本文主要是介绍了删除数据的几个方法,主要还是在介绍deleteMany、deleteOne以及remove,对于findOneAndDelete这些比较经典的方法也大概的提一嘴。

数据准备

老规矩,准备了下面四条数据

javascript 复制代码
{"string":"a","sort":1},
{"string":"B","sort":1},
{"string":"C","sort":1},
{"string":"d","sort":1}

插入到我们的collection中,然后就是最简单的查询,可以看到数据如下

插入成功,接下来一个一个试试下面的几个语法,实战来检验下。

deleteOne

Removes a single document from a collection.

没什么好说的。就是从集合中删除单个文档,最基础的语法如下

javascript 复制代码
db.test.deleteOne({string:'d'})

ok,测试完毕,下一个。

deleteMany

Removes all documents that match the from a collection

意思就是:从一个集合中删除掉多个文档,测试的语法如下:

javascript 复制代码
db.test.deleteMany({sort:1})

ok,测试完毕,下一个。

remove

与create相同,当我们不清楚删除的数量有多个或者只有一个的时候我们无法判断是要使用deleteOne还是deleteMany,此时就可以使用remove。

Removes documents from a collection.

意思就是从一个集合中删除文档。

需要注意的是,我们在5.0之前,使用remove的时候,用的语法是

javascript 复制代码
db.test.remove({sort:1},true)

其中,第二个的true表示的是否只删除一条,但是这个是旧版的语法,且我们在使用的时候,会报下面的提示

javascript 复制代码
'DeprecationWarning: Collection.remove() is deprecated. 
Use deleteOne, deleteMany, findOneAndDelete, or bulkWrite.'

新版的语法变成了(v5.0之后)

javascript 复制代码
db.test.remove({sort:1},{justOne:true})

但是请注意下上面的过期提醒,所以大概了解下人家用的意思就可以了

findOneAndDelete

这个语法更加简单,意思是找到并且删除第一个符合的条件,之所以将其拿出来,是因为他返回的数据是删除的那个对象,既

javascript 复制代码
db.test.findOneAndDelete({string:"d"})

到此,对于最常用的,除了批量操作之外的删除,我想你已经会了。但是文章也不单单如此,因为我们还需要了解下其他的参数。

collation

collation是一个比较重要的参数,在上述的几个api中都有体现出来,实用性也较为强,所以这儿用一个例子作为模板讲解下这个参数。

对于collation的解释,我在之前的博客已经提及,这儿不再说了。

整理mongodb文档:collation

假设一个场景,现在有以下两条数据,分别如下

javascript 复制代码
{string:'a'},
{string:'A'}

此时,两个数据都是a,只是一个是大写一个是小写,如果我们用

javascript 复制代码
db.test.deleteMany({string:'a'})

那么删除的是一条'a',而不是两条数据,这没什么问题,但是如果创建集合的时候,设置了大小写不敏感,就会出现将两条数据一起删除的情况,此时就需要在删除数据的时候,因此为了保险起见,我们会改用下面的写法

javascript 复制代码
db.test.deleteMany({string:'a'},{collation:{locale:'simple'}})

同样的道理,如果我们删除数据的时候想要大小写不敏感,即删除'a'的同时又删除'A'.就可以

javascript 复制代码
db.test.deleteMany(
  {string:'a'},
  {collation:{
    locale:'zh',
    strength:2
    }
  }
)

本文​资料来源:mongodb官网​

相关推荐
洛神灬殇44 分钟前
【LLM大模型技术专题】「入门到精通系列教程」基于ai-openai-spring-boot-starter集成开发实战指南
网络·数据库·微服务·云原生·架构
小鸡脚来咯1 小时前
redis分片集群架构
数据库·redis·架构
christine-rr2 小时前
征文投稿:如何写一份实用的技术文档?——以软件配置为例
运维·前端·网络·数据库·软件构建
海尔辛2 小时前
SQL 基础入门
数据库·sql
betazhou3 小时前
有没有 MariaDB 5.5.56 对应 MySQL CONNECTION_CONTROL 插件
linux·数据库·mysql·oracle·mariadb
Elohim8153 小时前
数据库SQLite基础
数据库·sqlite
TDengine (老段)3 小时前
TDengine 支持的平台汇总
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
大熊猫侯佩4 小时前
由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(四)
数据库·swiftui·apple watch
想用offer打牌5 小时前
面试官问:Redis和MySQL数据一致,为什么还需要MySQL?🤠
数据库·redis·mysql
chen.@-@5 小时前
后端下载限速(redis记录实时并发,bucket4j动态限速)
数据库·redis·缓存