複数のドキュメントの削除
MongoCollection
オブジェクトで deleteMany()
メソッドを呼び出すと、1 回の操作でコレクションから複数のドキュメントを削除できます。
削除するドキュメントを指定するには、削除するドキュメントに一致するクエリフィルターを渡します。 空のドキュメントを指定すると、MongoDB はコレクション内のすべてのドキュメントを照合し、それらを削除します。 deleteMany()
を使用してコレクション内のすべてのドキュメントを削除できますが、パフォーマンスを向上させるには、代わりにdrop()
メソッドを使用することを検討してください。
削除に成功すると、このメソッドはDeleteResult
のインスタンスを返します。 DeleteResult
インスタンスでgetDeletedCount()
メソッドを呼び出すと、削除されたドキュメントの数などの情報を取得できます。
削除操作が失敗した場合、ドライバーは例外を発生させます。 特定の条件で発生する例外の種類の詳細については、このページの下部にリンクしているdeleteMany()
の API ドキュメントを参照してください。
例
次のスニペットは、 sample_mflix
データベース内のmovies
コレクションから複数のドキュメントを削除します。
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 ドキュメントを参照してください。