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