Docs 菜单
Docs 主页
/ / /
Rust 驱动程序
/ / /

Delete Documents

在此页面上

  • Overview
  • 示例样本数据
  • 删除操作
  • 参数
  • 选项
  • 返回值
  • 删除示例
  • 删除一个示例
  • 删除多个示例
  • 更多信息
  • API 文档

在本指南中,您可以了解如何使用删除 操作从 MongoDB collection中删除文档。

本指南包括以下部分:

  • 示例的样本数据显示了删除操作示例使用的样本数据

  • 删除操作描述了如何使用驱动程序执行删除操作

  • 删除示例提供了删除操作的代码示例

  • 附加信息提供了本指南中提到的类型和方法的资源和 API 文档链接

本指南中的示例使用以下样本文档。 每个文档代表商店库存中的一个商品,并包含有关其分类和单价的信息:

{ "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

The collation to use when sorting results. To learn more about collations, see the Collations guide.

Type: Collation
Default: None

write_concern

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

hint

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

let_vars

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

comment

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 文档:

后退

Modify