Delete Documents
Overview
在本指南中,您可以学习;了解如何使用Java Reactive Streams驾驶员通过执行删除操作从MongoDB集合中删除文档。
删除操作可从MongoDB集合中删除一个或多个文档。 您可以使用 deleteOne()
或deleteMany()
方法执行删除操作。
样本数据
本指南中的示例使用 Atlas 示例数据集 中的 sample_restaurants.restaurants
集合。
要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅入门教程。
重要
项目 Reactor 库
本指南使用 Project ReactorPublisher
库来使用Java Reactive Streams驾驶员方法返回的 实例。要学习;了解有关 Project Reactor 库及其使用方法的更多信息,请参阅 Reactor 文档中的“入门” 。要进一步学习;了解如何使用本指南中的 Project Reactor 库方法,请参阅“将数据写入MongoDB ”指南。
删除操作
您可以使用以下方法在 MongoDB 中执行删除操作:
deleteOne()
,这会删除与 Atlas Search条件匹配的 第一个文档deleteMany()
,这会删除与 Atlas Search条件匹配的 所有文档
每种删除方法都需要一个查询过滤,该筛选器指定搜索条件,以确定选择要删除的文档。 有关查询筛选器的更多信息,请参阅MongoDB Server手册中的查询筛选器文档部分。
删除一个文档
要从MongoDB集合中删除单个文档,请调用deleteOne()
方法并传入查询过滤。 然后,将deleteOne()
结果传递给 中的静态Mono.from
Mono
方法。Mono
是 Project Reactor 库中的一个类。在Java Reactive Streams 中,驾驶员方法会返回Publisher
冷实例,这意味着除非您订阅返回的Publisher
,否则不会发生相应的操作。 本指南使用 Project Reactor 库来使用它们。 要学习;了解有关Mono
的更多信息,请参阅 Mono 在 Project Reactor 文档中。
以下示例从restaurants
集合中删除一个name
值为"Ready Penny Inn"
的文档:
Publisher<DeleteResult> deletePublisher = restaurants.deleteOne( eq("name", "Ready Penny Inn")); Mono.from(deletePublisher).block();
删除多个文档
要从MongoDB集合中删除多个文档,请调用deleteMany()
方法并传入查询过滤。 然后,将deleteMany()
结果传递给 中的静态Mono.from
Mono
方法。Mono
是 Project Reactor 库中的一个类。在Java Reactive Streams 中,驾驶员方法会返回Publisher
冷实例,这意味着除非您订阅返回的Publisher
,否则不会发生相应的操作。 本指南使用 Project Reactor 库来使用它们。 要学习;了解有关Mono
的更多信息,请参阅 Mono 在 Project Reactor 文档中。
以下示例删除restaurants
集合中borough
值为"Brooklyn"
的所有文档:
Publisher<DeleteResult> deletePublisher = restaurants.deleteMany( eq("borough", "Brooklyn")); Mono.from(deletePublisher).block();
自定义删除操作
DeleteOptions
类包含修改删除方法行为的方法。 要使用DeleteOptions
类,请构造该类的新实例,然后调用其一个或多个方法来修改删除操作。 您可以将这些方法调用链接在一起。 要修改删除操作的行为,请将类实例和链式方法调用作为第二个参数传递给deleteOne()
或deleteMany()
方法。
您可以使用DeleteOptions
类中的以下方法来修改删除方法。 所有方法都是可选的。
方法 | 说明 |
---|---|
collation (Collation collation) | Specifies the kind of language collation to use when sorting
results. For more information, see Collation
in the MongoDB Server manual. |
hint (Bson hint) | Gets or sets the index to scan for documents.
For more information, see the hint statement
in the MongoDB Server manual. |
hint (String hint) | Gets or sets the index to scan for documents.
For more information, see the hint statement
in the MongoDB Server manual. |
let (Bson variables) | A map of parameter names and values. Values must be constant or closed
expressions that don't reference document fields. For more information,
see the let statement in the
MongoDB Server manual. |
comment (BsonValue comment) | A comment to attach to the operation. For more information, see the delete command
fields guide in the
MongoDB Server manual for more information. |
comment (String comment) | A comment to attach to the operation. For more information, see the delete command
fields guide in the
MongoDB Server manual for more information. |
例子
以下代码使用 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驾驶员插入文档的可运行代码示例,请参阅Write Data to MongoDB指南。
API 文档
要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: