
# 删除命令
- 删除分为逻辑删除（基于条件的remove删除）和快速删除（dropCollection，dropDatabase）。
- 用户做了大量删除操作后，实际数据量可能没有多大变化，但磁盘空间使用量增加了。是因为无论是写入、更新还是删除，以及索引插入和删除等操作，在后台实际上都会转成写入。因为底层的存储引擎（WiredTiger和RocksDB）采用都是appendOnly机制。只有当存储引擎内部数据状态满足一定条件后，会触发内部的compaction操作，进行数据压缩，进而释放磁盘空间。
- 如果整个数据库不需要了，可以执行dropDatabase命令进行删除而不是逻辑删除，这样快速释放磁盘空间。
- 删除操作会涉及到备节点同步，可以指定writeConcern级别。详情请参见[Write Concern](https://docs.mongodb.com/manual/reference/write-concern/)。
#### 注意事项
- 避免误删除。删除命令不能撤回，所以在删除前先执行**db**命令查看下当前所在的库。
- 一旦误删除后，恢复时注意以下几点：
  1. 根据历史备份文件，进行[备份](https://support.huaweicloud.com/usermanual-dds/dds_03_0006.html)和[恢复](https://support.huaweicloud.com/usermanual-dds/dds_data_restore.html)。
  
  2. 如果有备份实例，从备份实例中，通过[导入和导出](https://support.huaweicloud.com/usermanual-dds/dds_migration_overview.html)恢复。误删除后，恢复过程如果有新的数据写入，需要业务端考虑数据的一致性问题，即是否应该执行恢复。
  
  3. 实例最后的备份时间点至当前误删除时间点的数据，无法进行恢复。
   
- 删除命令，如果执行成功，则表示成功。如果执行失败，此时可能已经删除了部分数据了。所以不要继续使用删除的库表。建议继续下发删除命令，直到删除成功为止。
![](https://support.huaweicloud.com/devg-dds/public_sys-resources/caution_3.0-zh-cn.png)
使用删除命令删除业务数据会造成业务数据丢失。
