对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

Delete Documents

在本指南中,您可以学习如何使用Java Reactive Streams驱动程序通过执行删除操作从MongoDB集合中删除文档。

删除操作可从MongoDB集合中删除一个或多个文档。 您可以使用deleteOne()deleteMany()方法执行删除操作。

本指南中的示例使用来自 Atlas 示例数据集sample_restaurants.restaurants 集合。

要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅入门教程。

重要

项目 Reactor 库

本指南使用 Project Reactor 库来使用Java Reactive Streams驱动程序方法返回的 Publisher 实例。要学习;了解有关 Project Reactor 库及其使用方法的更多信息,请参阅 Reactor 文档中的入门。要进一步学习;了解如何使用本指南中的 Project Reactor 库方法,请参阅“将数据写入MongoDB”指南。

您可以使用以下方法在 MongoDB 中执行删除操作:

  • deleteOne(),这会删除与 Atlas Search条件匹配的 第一个文档

  • deleteMany(),这会删除与 Atlas Search条件匹配的 所有文档

每种删除方法都需要一个查询过滤,该筛选器指定搜索条件,以确定选择要删除的文档。 有关查询筛选器的更多信息,请参阅MongoDB Server手册中的查询筛选器文档部分

要从MongoDB集合中删除单个文档,请调用 deleteOne() 方法并传入查询筛选条件。然后,将 deleteOne() 结果传递给 Mono 中的静态 Mono.from 方法。 Mono 是 Project Reactor 库中的一个类。在Java Reactive Streams 中,驱动程序方法会返回 Publisher 冷实例,这意味着除非您订阅返回的 Publisher,否则不会发生相应的操作。本指南使用 项目 Reactor 库来使用它们。要学习;了解有关Mono 的更多信息,请参阅 项目 Reactor 文档中的 Mono。

以下示例从restaurants集合中删除一个name值为"Ready Penny Inn"的文档:

Publisher<DeleteResult> deletePublisher = restaurants.deleteOne(
eq("name", "Ready Penny Inn"));
Mono.from(deletePublisher).block();

要从MongoDB集合中删除多个文档,请调用 deleteMany() 方法并传入查询筛选条件。然后,将 deleteMany() 结果传递给 Mono 中的静态 Mono.from 方法。 Mono 是 Project Reactor 库中的一个类。在Java Reactive Streams 中,驱动程序方法会返回 Publisher 冷实例,这意味着除非您订阅返回的 Publisher,否则不会发生相应的操作。本指南使用 项目 Reactor 库来使用它们。要学习;了解有关Mono 的更多信息,请参阅 项目 Reactor 文档中的 Mono。

以下示例删除restaurants集合中borough值为"Brooklyn"的所有文档:

Publisher<DeleteResult> deletePublisher = restaurants.deleteMany(
eq("borough", "Brooklyn"));
Mono.from(deletePublisher).block();

DeleteOptions类包含修改删除方法行为的方法。 要使用DeleteOptions类,请构造该类的新实例,然后调用其一个或多个方法来修改删除操作。 您可以将这些方法调用链接在一起。 要修改删除操作的行为,请将类实例和链式方法调用作为第二个参数传递给deleteOne()deleteMany()方法。

您可以使用DeleteOptions类中的以下方法来修改删除方法。 所有方法都是可选的。

方法
说明

collation (Collation collation)

指定对结果进行排序时要使用的语言排序规则类型。 有关更多信息,请参阅 MongoDB Server 手册中的排序规则

hint (Bson hint)

获取或设置用于扫描文档的索引。 有关更多信息,请参阅 MongoDB Server 手册中的提示语句

hint (String hint)

获取或设置用于扫描文档的索引。 有关更多信息,请参阅 MongoDB Server 手册中的提示语句

let (Bson variables)

参数名称和值的映射。 值必须是常量或不引用文档字段的闭合表达式。 有关更多信息,请参阅 MongoDB Server 手册中的let 语句

comment (BsonValue comment)

要附加到操作的注释。 有关更多信息,请参阅 MongoDB Server 手册中的删除命令字段指南。

comment (String comment)

要附加到操作的注释。 有关更多信息,请参阅 MongoDB Server 手册中的删除命令字段指南。

以下代码使用 deleteMany() 方法删除restaurants集合中 name 值包含string "Mongo" 的所有文档。 它还使用comment方法为操作添加注释。

Publisher<DeleteResult> deletePublisher = restaurants.deleteMany(
regex("name", "Mongo"),
new DeleteOptions().comment("Deleting Mongo restaurants"));
Mono.from(deletePublisher).block();

有关使用Java Reactive Streams驾驶员插入文档的可运行代码示例,请参阅增删改查操作指南。

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: