文档菜单
文档首页
/ / /
Java 同步驱动器
/ /

删除多个文档

您可以通过调用 deleteMany() 方法在单个操作中从集合中删除多个文档。deleteMany() 方法在 MongoCollection 对象上调用。

要指定要删除的文档,传递一个查询过滤器来匹配您想要删除的文档。如果您提供一个空文档,MongoDB 将匹配集合中的所有文档并删除它们。虽然您可以使用 deleteMany() 删除集合中的所有文档,但考虑使用 drop() 方法以获得更好的性能。

在成功删除后,此方法返回一个 DeleteResult 实例。您可以通过调用 DeleteResult 实例上的 getDeletedCount() 方法来获取有关信息,例如已删除文档的数量。

如果您的删除操作失败,驱动程序将引发异常。有关在特定条件下引发的异常类型的更多信息,请参阅页面底部链接的 deleteMany() API 文档。

以下代码片段从 sample_mflix 数据库中的 movies 集合中删除多个文档。

传递给 deleteMany() 方法的查询过滤器与所有包含 imdb 子文档中 rating 小于 1.9 的电影文档匹配。

注意

此示例使用连接 URI 连接到 MongoDB 实例。有关连接到您的 MongoDB 实例的更多信息,请参阅连接指南.

// Deletes multiple documents from a collection by using the Java driver
package usage.examples;
import static com.mongodb.client.model.Filters.lt;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
public class DeleteMany {
public static void main(String[] args) {
// Replace the uri string with your MongoDB deployment's connection string
String uri = "<connection string uri>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase database = mongoClient.getDatabase("sample_mflix");
MongoCollection<Document> collection = database.getCollection("movies");
Bson query = lt("imdb.rating", 1.9);
try {
// Deletes all documents that have an "imdb.rating" value less than 1.9
DeleteResult result = collection.deleteMany(query);
// Prints the number of deleted documents
System.out.println("Deleted document count: " + result.getDeletedCount());
// Prints a message if any exceptions occur during the operation
} catch (MongoException me) {
System.err.println("Unable to delete due to an error: " + me);
}
}
}
}

运行示例时,您应该看到在调用 deleteMany() 时报告已删除的文档数量的输出。

Deleted document count: 4

提示

旧版 API

如果您正在使用旧版 API,请参阅我们的常见问题解答页面了解您需要对此代码示例进行的更改。

有关本页面上提到的类和方法的更多信息,请参阅以下 API 文档

  • deleteMany()

  • DeleteResult

  • drop()

返回

删除一个