MongoDB 删除文档
前面的几个章节中我们已经学习了MongoDB中如何为集合添加数据和更新数据。在本章节中我们将继续学习MongoDB集合的删除。
在 MongoDB 中提供了如下几个方法:
- db.collection.deleteOne(): 删除一行数据
- db.collection.deleteMany() : 删除多行数据
- db.collection.remove() : 删除数据(官方已经不推荐使用)
详细说明
// 语法
db.collection.deleteOne(
<filter>,
{
writeConcern: <document>,
collation: <document>
}
)
db.collection.deleteMany(
<filter>,
{
writeConcern: <document>,
collation: <document>
}
)
参数说明:
- filter (可选)查询条件
- writeConcern (可选)抛出异常级别
- collation (可选)指定要用于操作的排序规则。详细操作可以查看:https://docs.mongodb.com/manual/reference/collation/
示例
删除集合中所有的文档。
db.products.deleteMany({});
删除集合中 instock 值为 true 的所有文档
db.products.deleteMany({instock : true });
删除集合中 instock 值为 true 的一个文档
db.products.deleteOne({instock : true });
Mongodb中的repairDatabase()
repairDatabase 用来整理磁盘碎片,以及回收磁盘空间。 remove() 方法 并不会真正释放空间。db.repairDatabase() 来回收磁盘空间。
当使用repairDatabase 命令或者在shell命令中运行db.repairDatabase() 或者mongod –repair的过程中,清除的破损文件将不可恢复。Repair过程中,其他所有操作都无法执行,直到修复完成。
语法
> db.repairDatabase()
# 或者
> db.runCommand({ repairDatabase: 1 })
这个命令,在官方的文档中也有提到,使用之前 最好做好备份 https://docs.mongodb.com/manual/reference/command/repairDatabase/index.html