在前面的几个章节中我们已经学习了 MongoDB 中如何为集合添加数据和更新数据,在本章节中我们将继续学习 MongoDB 集合的删除。
常用的删除文档方法包括 deleteOne()、deleteMany() 以及 findOneAndDelete()。
使用场景:
- 数据清理:删除不再需要的旧数据或无效数据。
- 数据修正:在数据修正过程中删除错误的或重复的文档。
- 自动化任务:在自动化脚本或任务中,根据特定条件删除文档。
1、deleteOne()
deleteOne() 方法用于删除匹配过滤器的单个文档。
语法:
db.collection.deleteOne(filter, options)
- filter:用于查找要删除的文档的查询条件。
- options(可选):一个可选参数对象。
实例
db.myCollection.deleteOne({ name: "Alice" });
返回结果:
{
"acknowledged": true,
"deletedCount": 1
}
2、deleteMany()
deleteMany() 方法用于删除所有匹配过滤器的文档。
语法:
db.collection.deleteMany(filter, options)
- filter:用于查找要删除的文档的查询条件。
- options(可选):一个可选参数对象。
实例
db.myCollection.deleteMany({ status: "inactive" });
返回结果:
{
"acknowledged": true,
"deletedCount": 1
}
3、findOneAndDelete()
findOneAndDelete() 方法用于查找并删除单个文档,并可以选择返回删除的文档。
语法:
db.collection.findOneAndDelete(filter, options)
- filter:用于查找要删除的文档的查询条件。
- options:可选参数对象,如
projection
、sort
等。
实例
db.myCollection.findOneAndDelete(
{ name: "Charlie" },
{ projection: { name: 1, age: 1 } }
);
findOneAndDelete 返回被删除的文档,如果找不到匹配的文档,则返回 null。
删除操作的选项
这些删除方法的 options 参数通常可以包含以下选项:
- writeConcern:指定写操作的确认级别。
- collation:指定比较字符串时使用的排序规则。
- projection(仅适用于
findOneAndDelete
):指定返回的字段。 - sort(仅适用于
findOneAndDelete
):指定排序顺序以确定要删除的文档。
实例
删除单个文档:
db.myCollection.deleteOne({ name: "Alice" });
删除多个文档:
db.myCollection.deleteMany({ status: "inactive" });
查找并删除单个文档:
db.myCollection.findOneAndDelete(
{ name: "Charlie" },
{ projection: { name: 1, age: 1 } }
);