删除文档
概述
在本指南中,您可以了解如何使用删除操作从MongoDB集合中删除文档。
本指南包括以下部分
示例数据
本指南中的示例使用以下样本文档。每个文档代表商店库存中的一个项目,并包含有关其分类和单价的信息
{ "item": "trowel", "category": "garden", "unit_price": 9.89 }, { "item": "placemat", "category": "kitchen", "unit_price": 3.19 }, { "item": "watering can", "category": "garden", "unit_price": 11.99 }
删除操作
Rust 驱动提供了delete_one() 和 delete_many() 方法来执行删除操作。
参数
delete_one() 和 delete_many() 方法接受一个查询过滤器作为参数。查询过滤器由用于匹配文档的字段和值组成。
选项
您可以通过将选项构建器方法链接到 delete_one() 和 delete_many() 来修改删除操作方法的行为。这些选项方法设置 DeleteOptions 结构体的字段。
注意
设置选项
您可以通过直接将选项构建器方法链接到删除方法调用来设置 DeleteOptions 字段。如果您正在使用较早期的驱动程序版本,您必须通过将选项构建器方法链接到 builder() 方法来构建一个 DeleteOptions 实例。然后,将选项实例作为参数传递给 delete_one() 或 delete_many()。
以下表格描述了 DeleteOptions 中可用的选项
选项 | 描述 |
|---|---|
collation | |
write_concern | |
hint | |
let_vars | 参数和值的映射。这些参数可以在聚合表达式中作为变量访问。此选项仅当连接到 MongoDB 服务器版本 5.0 及更高版本时可用。 类型: Document |
comment | 与操作相关的任意 Bson 值,以便通过数据库分析器、currentOp 和日志来跟踪它。此选项仅当连接到 MongoDB 服务器版本 4.4 及更高版本时可用。类型: Bson默认值: None |
以下代码演示了如何通过将 comment() 方法链接到 delete_one() 方法来设置 comment 字段
let res = my_coll .delete_one(filter) .comment(bson!("hello!")) .await?;
返回值
delete_one() 和 delete_many() 方法返回一个 DeleteResult 类型。此类型包含 deleted_count 属性,该属性描述了已删除的文档数量。如果没有文档与您指定的查询过滤器匹配,则删除操作不会删除任何文档,并且 deleted_count 的值为 0。
delete_many() 示例
本示例执行以下操作
调用
delete_many()方法将查询过滤器传递给
delete_many()以匹配category值为"garden"的文档将
hint()方法链接到delete_many()以使用_id_索引作为删除操作的提示
let filter = doc! { "category": "garden" }; let hint = Hint::Name("_id_".to_string()); let res = my_coll .delete_many(filter) .hint(hint) .await?; println!("Deleted documents: {}", res.deleted_count);
Deleted documents: 2
注意
如果您在前面代码示例中使用 delete_one() 方法而不是 delete_many() 方法,驱动程序将仅删除与查询过滤器匹配的两个文档中的第一个。
更多信息
有关可运行的删除操作示例,请参阅以下用法示例
要了解更多关于本指南中所述操作的信息,请参阅以下文档
API 文档
要了解更多关于本指南中提到的方法和类型的信息,请参阅以下 API 文档