官网地址:https://docs.mongodb.com/drivers/java/sync/current/usage-examples/deleteOne/
您可以使用对象deleteOne()
上的方法从集合中删除单个文档MongoCollection
。该方法接受与您要删除的文档匹配的查询过滤器。如果不指定过滤器,MongoDB 将匹配集合中的第一个文档。该 deleteOne()
方法仅删除匹配的第一个文档。
此方法返回一个实例,DeleteResult
其中包含的信息包括由于操作而删除了多少文档。
如果删除操作失败,驱动程序会引发异常。有关在特定条件下引发的异常类型的更多信息,请参阅deleteOne()
本页底部链接的 API 文档。
以下代码段从数据库movies
集合中删除单个文档sample_mflix
。该示例使用eq()
过滤器来匹配与title
文本完全匹配的 电影'The Garbage Pail Kids Movie'
。
此示例使用连接字符串连接到 MongoDB 实例。要了解有关连接到 MongoDB 实例的更多信息,请参阅 连接指南。
package usage.examples; import static com.mongodb.client.model.Filters.eq; 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 DeleteOne { 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 = eq("title", "The Garbage Pail Kids Movie"); try { DeleteResult result = collection.deleteOne(query); System.out.println("Deleted document count: " + result.getDeletedCount()); } catch (MongoException me) { System.err.println("Unable to delete due to an error: " + me); } } } }
运行示例时,如果您在调用中传递的查询过滤器 deleteOne()
匹配文档并将其删除,您应该会看到如下所示的输出:
Deleted document count: 1
如果您的查询过滤器与您的集合中的文档不匹配,您的调用不会deleteOne()
删除任何文档并返回以下内容:
Deleted document count: 0
通过调用对象deleteMany()
上的方法,您可以在单个操作中从集合中删除多个文档MongoCollection
。
要指定要删除的文档,请传递与要删除的文档匹配的查询过滤器。如果您提供一个空文档,MongoDB 会匹配集合中的所有文档并删除它们。虽然您可以使用deleteMany()
删除集合中的所有文档,但请考虑改用该drop()
方法以获得更好的性能。
成功删除后,此方法返回 的实例 DeleteResult
。您可以通过调用实例getDeletedCount()
上的方法 来检索信息,例如删除的文档数DeleteResult
。
如果删除操作失败,驱动程序会引发异常。有关在特定条件下引发的异常类型的更多信息,请参阅deleteMany()
本页底部链接的 API 文档。
以下代码段从数据库中的movies
集合中删除多个文档sample_mflix
。
传递给查询筛选deleteMany()
方法包含所有电影文件相匹配rating
的小于1.9的在imdb
子文件。
此示例使用连接字符串连接到 MongoDB 实例。要了解有关连接到 MongoDB 实例的更多信息,请参阅 连接指南。
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 { DeleteResult result = collection.deleteMany(query); System.out.println("Deleted document count: " + result.getDeletedCount()); } catch (MongoException me) { System.err.println("Unable to delete due to an error: " + me); } } } }
运行该示例时,您应该会看到输出报告在调用 deleteMany()。
Deleted document count: 4
提示 传统 API
如果您使用的是旧 API, 请参阅我们的常见问题解答页面 以了解您需要对此代码示例进行哪些更改。