Delete Documents
Overview
在本指南中,您可以了解如何使用删除 操作从 MongoDB collection中删除文档。
本指南包括以下部分:
示例样本数据
本指南中的示例使用以下样本文档。 每个文档代表商店库存中的一个商品,并包含有关其分类和单价的信息:
{ "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
中可用的选项:
选项 | 说明 |
---|---|
| The collation to use when sorting results. To learn more about collations,
see the Collations guide. Type: Collation Default: None |
| The write concern for the operation. If you don't set this
option, the operation inherits the write concern set for
the collection. To learn more about write concerns, see
Write Concern in the
Server manual. Type: WriteConcern |
| The index to use for the operation. To learn more about
indexes, see Indexes in the Server
manual. This option is available only when connecting to
MongoDB Server versions 4.4 and later. Type: Hint Default: None |
| A map of parameters and values. These parameters can be accessed
as variables in aggregation expressions. This option is available
only when connecting to MongoDB Server versions 5.0 and later. Type: Document |
| An arbitrary Bson value tied to the operation to trace
it through the database profiler, currentOp , and
logs. This option is available only when connecting to
MongoDB Server versions 4.4 and later.Type: Bson Default: 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_one()
方法删除item
值为 "placemat"
的文档:
let filter = doc! { "item": "placemat" }; let res = my_coll.delete_one(filter).await?; println!("Deleted documents: {}", res.deleted_count);
Deleted documents: 1
删除多个示例
此示例将执行以下动作:
调用
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 文档: