同福

MongoDB删除数据的几种方法【20210714】

介绍

介绍

我们在使用MongoDB数据库的时候会有需要对数据库里的数据进行物理删除(状态删除的数据还是存在的)的需求,通常情况下物理删除的数据是找不回来的(能找回来对于就想抹掉数据的需求来说也不安全),所以我们有必要对删除数据的方法有一个深入的了解。

remove

使用db.connection.remove()方法可以删除符合规则的数据。

如果参数为空,或者不是有效参数,都会清空集合全部数据!!!

准备

首先向集合c里面插入3条数据。

home/topic/2021/0715/10/5acd0cea508ecb5f9fbef350435100c6.png

语法

删除一条匹配的文档。

db.c.remove({"dm":{$regex: /tongfu\.net/}}, {"justOne": true})

home/topic/2021/0715/11/13ca7bee5cee804a8581ee4efe875ccd.png

删除所有匹配的文档。

db.c.remove({"dm":{$regex: /tongfu\.net/}})

home/topic/2021/0715/11/083d48fa5870f367e91b1bab2685f09e.png删除所有文档,随便传入一个只包含字母和数字的字符串。

db.c.remove("anything")

home/topic/2021/0715/11/466579e5af87d50cae0f9292a4c2d4b0.png

delete

准备

同样准备了3条数据。

home/topic/2021/0715/11/7af527d2e9525864014c83fbdb49a0e4.png

deleteOne

使用deleteOne可以删除匹配的一条数据。

db.c.deleteOne({"dm":{$regex: /tongfu\.net/}})

home/topic/2021/0715/11/15d1c74b55e772988db641d64039db93.png

deleteMany

使用deleteMany可以删除匹配的所有数据。

db.c.deleteMany({"dm":{$regex: /tongfu\.net/}})
home/topic/2021/0715/11/bc8917b631aefe78718305a7716972f1.png

删除所有文档

无论是deleteOne还是deleteMany都不会有像remove那样随便传一个字符串就清空集合的功能。

总结

今天福哥带着童鞋们学习了MongoDB数据库删除数据的几种方法,这里面remove方法有点生猛,一个不小心就会把数据弄丢了。而deleteMany方法也有这样的风险,不过没有“删除所有文档”的功能风险小一些。最稳妥的是deleteOne方法,在没有删除多条数据的预期的情况下还是用这个吧!