整理mongodb文档:删
求关注,哪儿不足,求大佬们指出,哪儿写的不够通俗易懂跟清晰,也求指出
本文主要是介绍了删除数据的几个方法,主要还是在介绍deleteMany、deleteOne以及remove,对于findOneAndDelete这些比较经典的方法也大概的提一嘴。
数据准备
老规矩,准备了下面四条数据
{"string":"a","sort":1},
{"string":"B","sort":1},
{"string":"C","sort":1},
{"string":"d","sort":1}
插入到我们的collection中,然后就是最简单的查询,可以看到数据如下
插入成功,接下来一个一个试试下面的几个语法,实战来检验下。
Removes a single document from a collection.
没什么好说的。就是从集合中删除单个文档,最基础的语法如下
db.test.deleteOne({string:'d'})
ok,测试完毕,下一个。
Removes all documents that match the from a collection
意思就是:从一个集合中删除掉多个文档,测试的语法如下:
db.test.deleteMany({sort:1})
ok,测试完毕,下一个。
与create相同,当我们不清楚删除的数量有多个或者只有一个的时候我们无法判断是要使用deleteOne还是deleteMany,此时就可以使用remove。
Removes documents from a collection.
意思就是从一个集合中删除文档。
需要注意的是,我们在5.0之前,使用remove的时候,用的语法是
db.test.remove({sort:1},true)
其中,第二个的true表示的是否只删除一条,但是这个是旧版的语法,且我们在使用的时候,会报下面的提示
'DeprecationWarning: Collection.remove() is deprecated.
Use deleteOne, deleteMany, findOneAndDelete, or bulkWrite.'
新版的语法变成了(v5.0之后)
db.test.remove({sort:1},{justOne:true})
但是请注意下上面的过期提醒,所以大概了解下人家用的意思就可以了
这个语法更加简单,意思是找到并且删除第一个符合的条件,之所以将其拿出来,是因为他返回的数据是删除的那个对象,既
db.test.findOneAndDelete({string:"d"})
到此,对于最常用的,除了批量操作之外的删除,我想你已经会了。但是文章也不单单如此,因为我们还需要了解下其他的参数。
collation是一个比较重要的参数,在上述的几个api中都有体现出来,实用性也较为强,所以这儿用一个例子作为模板讲解下这个参数。
对于collation的解释,我在之前的博客已经提及,这儿不再说了。
整理mongodb文档:collation
假设一个场景,现在有以下两条数据,分别如下
{string:'a'},
{string:'A'}
此时,两个数据都是a,只是一个是大写一个是小写,如果我们用
db.test.deleteMany({string:'a'})
那么删除的是一条’a’,而不是两条数据,这没什么问题,但是如果创建集合的时候,设置了大小写不敏感,就会出现将两条数据一起删除的情况,此时就需要在删除数据的时候,因此为了保险起见,我们会改用下面的写法
db.test.deleteMany({string:'a'},{collation:{locale:'simple'}})
同样的道理,如果我们删除数据的时候想要大小写不敏感,即删除’a’的同时又删除’A’.就可以
db.test.deleteMany(
{string:'a'},
{collation:{
locale:'zh',
strength:2
}
}
)
本文资料来源:mongodb官网