删除多个文档
您可以通过调用对象上的deleteMany()
MongoCollection
方法,在单个操作中从collection中删除多个文档。
要指定要删除的文档,请传递与要删除的文档匹配的查询筛选器。 如果提供空文档,MongoDB 会匹配collection中的所有文档并将其删除。虽然您可以使用deleteMany()
删除collection中的所有文档,但为了获得更好的性能,请考虑使用drop()
方法。
成功删除后,此方法将返回DeleteResult
的实例。 您可以通过对DeleteResult
实例调用getDeletedCount()
方法来检索已删除文档等信息。
如果删除操作失败,驱动程序会引发异常。 有关特定条件下引发的异常类型的更多信息,请参阅本页底部链接的deleteMany()
的 API 文档。
例子
以下代码片段从数据库sample_mflix
的collectionmovies
中删除多个文档。
传递给deleteMany()
方法的查询筛选器匹配在imdb
子文档中包含小于2.9
的rating
的所有电影文档。
运行该示例时,您应该看到输出,报告调用deleteMany()
时删除的文档数。
注意
此示例使用连接 URI 连接到MongoDB实例。 要学习;了解有关连接到MongoDB实例的更多信息,请参阅连接指南。
import com.mongodb.MongoException import com.mongodb.client.model.Filters import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking data class Movie(val imdb: IMDB){ data class IMDB(val rating: Double) } fun main() = runBlocking { // Replace the uri string with your MongoDB deployment's connection string val uri = "<connection string uri>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Movie>("movies") val query = Filters.lt("${Movie::imdb.name}.${Movie.IMDB::rating.name}", 2.9) try { val result = collection.deleteMany(query) println("Deleted document count: " + result.deletedCount) } catch (e: MongoException) { System.err.println("Unable to delete due to an error: $e") } mongoClient.close() }
Deleted document count: 4
有关此页面上提及的类和方法的更多信息,请参阅以下 API 文档: