Docs 菜单
Docs 主页
/ / /
Java (Sync) 驱动程序
/ /

删除多个文档

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

要指定要删除的文档,请传递与要删除的文档匹配的查询筛选器。 如果提供空文档,MongoDB 会匹配collection中的所有文档并将其删除。虽然您可以使用deleteMany()删除collection中的所有文档,但为了获得更好的性能,请考虑使用drop()方法。

成功删除后,此方法将返回DeleteResult的实例。 您可以通过对DeleteResult实例调用getDeletedCount()方法来检索已删除文档等信息。

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

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

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

注意

此示例使用连接 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

提示

Legacy API

如果您使用的是传统 API,请参阅我们的常见问题页面,了解需要对该代码示例进行哪些更改。

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

  • DeleteMany()

  • DeleteResult

  • Drop()

后退

删除文档