文档菜单
文档首页
/ / /
Kotlin 协程
/ /

删除多个文档

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

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

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

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

以下示例删除了sample_mflix数据库中movies集合中的多个文档。

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

运行示例时,您应该在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文档

  • deleteMany()

  • DeleteResult

  • drop()

返回

删除单个