MongoDB进阶与实战:微服务整合、性能优化、架构管理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.6 删除文档

2.6.1 删除单个文档

执行下面的命令,删除单个book文档:

注意:remove命令会删除匹配条件的全部文档,由于_id是唯一的,所以上述命令最多只会删除一个文档。如果希望明确限定只删除一个文档,则需要指定justOne参数,命令格式如下:

例如:

该命令将会删除满足type:novel条件的首条记录。

MongoDB 3.2版本提供了delete语义的命令,因此也可以使用deleteOne方法来实现删除单个文档,代码如下:

2.6.2 删除指定条件文档

指定删除某个分类的book文档,代码如下:

同样的效果可以使用deleteMany命令实现,代码如下:

2.6.3 删除全部文档

删除全部文档,代码如下:

或者使用deleteMany命令实现,代码如下:

remove、deleteMany等命令需要对查询范围内的文档逐个删除,如果希望删除整个集合,则使用drop命令会更加高效,代码如下:

drop命令会同时删除集合的全部索引。

同理,如果删除的文档非常多(仅希望保留集合中的一小部分数据),则可以先备份保留数据,执行drop命令之后再重建集合。

2.6.4 返回被删除文档

remove、deleteOne等命令在删除文档后只会返回确认性的信息,如果希望获得被删除的文档,则可以使用findOneAndDelete命令,代码如下:

除了在结果中返回删除文档,findOneAndDelete命令还允许定义“删除的顺序”,即按照指定顺序删除找到的第一个文档,代码如下:

remove、deleteOne等命令只能按默认顺序删除,利用这些特点,findOneAndDelete可以实现一些有趣的功能,诸如队列的先进先出动作。