AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Delete Documents

このガイドでは、 Java Reactive Streams ドライバーを使用して、削除操作を実行し、 MongoDBコレクションからドキュメントを削除する方法を学習できます。

削除操作は、 MongoDBコレクションから 1 つ以上のドキュメントを削除します。 削除操作は、 deleteOne()またはdeleteMany()メソッドを使用して実行できます。

このガイドの例では、Atlas サンプル データセットsample_restaurants.restaurants コレクションを使用します。

無料のMongoDB Atlas cluster を作成し、サンプルデータセットをロードする方法については、 使い始めるチュートリアルを参照してください。

重要

プロジェクトリ アクター ライブラリ

このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返された Publisher インスタンスを消費します。Project Reactive ライブラリとその使用方法の詳細については、React ドキュメントの使用開始を参照してください。このガイドでは Project React ライブラリ メソッドをどのように使用しているかについて詳しくは、 「 MongoDBへのデータの書込み 」ガイドを参照してください。

MongoDB では、次の方法で削除操作を実行できます。

  • deleteOne()は、検索条件に一致する最初のドキュメントを削除します。

  • deleteMany()は、検索条件に一致するすべてのドキュメントを削除します

各削除方法にはクエリフィルターが必要です。これは、削除対象として選択するドキュメントを決定する検索条件を指定します。 クエリフィルターの詳細については、 MongoDB Serverマニュアルの「クエリフィルター ドキュメント 」セクションを参照してください。

MongoDBコレクションから単一ドキュメントを削除するには、deleteOne() メソッドを呼び出し、クエリフィルターを渡します。次に、deleteOne() の結果を Mono から静的 Mono.from メソッドに渡します。 Mono は、プロジェクト Reactor ライブラリのクラスです。Java Reactive Streams では、ドライバー メソッドはコールド Publisher インスタンスを返します。つまり、返された Publisher をサブスクライブしないと、対応する操作は実行されません。このガイドでは、Project Reactor ライブラリを使用してそれらを消費します。Mono の詳細については、 Project React ドキュメントのMongoDBを参照してください。

次の例では、 nameの値が"Ready Penny Inn"であるドキュメントをrestaurantsコレクションから削除します。

Publisher<DeleteResult> deletePublisher = restaurants.deleteOne(
eq("name", "Ready Penny Inn"));
Mono.from(deletePublisher).block();

MongoDBコレクションから複数のドキュメントを削除するには、deleteMany() メソッドを呼び出し、クエリフィルターを渡します。次に、deleteMany() の結果を Mono から静的 Mono.from メソッドに渡します。 Mono は、プロジェクト Reactor ライブラリのクラスです。Java Reactive Streams では、ドライバー メソッドはコールド Publisher インスタンスを返します。つまり、返された Publisher をサブスクライブしないと、対応する操作は実行されません。このガイドでは、Project Reactor ライブラリを使用してそれらを消費します。Mono の詳細については、 Project React ドキュメントのMongoDBを参照してください。

次の例では、 boroughの値が"Brooklyn"であるrestaurantsコレクション内のすべてのドキュメントを排除します。

Publisher<DeleteResult> deletePublisher = restaurants.deleteMany(
eq("borough", "Brooklyn"));
Mono.from(deletePublisher).block();

DeleteOptionsクラスには、削除メソッドの動作を変更するメソッドが含まれています。 DeleteOptionsクラスを使用するには、クラスの新しいインスタンスを構築し、1 つ以上のそのメソッドを呼び出して 削除操作を変更します。 これらのメソッド呼び出しを連鎖させることができます。 削除操作の動作を変更するには、クラスインスタンスと連結されたメソッド呼び出しを メソッドまたは メソッドの 2deleteOne() deleteMany()番目の引数として渡します。

削除メソッドを変更するには、 DeleteOptionsクラスの次のメソッドを使用します。 すべてのメソッドは任意です。

方式
説明

collation (Collation collation)

結果をソートするときに使用する言語照合の種類を指定します。 詳細については、MongoDB Server マニュアルの 「照合」 を参照してください。

hint (Bson hint)

ドキュメントをスキャンするインデックスを取得または設定します。 詳細については、MongoDB Server マニュアルのヒント ステートメントを参照してください。

hint (String hint)

ドキュメントをスキャンするインデックスを取得または設定します。 詳細については、MongoDB Server マニュアルのヒント ステートメントを参照してください。

let (Bson variables)

パラメーター名と値のマップ。 値は、ドキュメント フィールドを参照しない定数または閉じた式である必要があります。 詳細については、MongoDB Server マニュアルのlet ステートメントを参照してください。

comment (BsonValue comment)

操作に添付するコメント。 詳細については、MongoDB Server マニュアルの 「削除コマンド フィールドのガイド」 を参照してください。

comment (String comment)

操作に添付するコメント。 詳細については、MongoDB Server マニュアルの 「削除コマンド フィールドのガイド」 を参照してください。

次のコードでは、 deleteMany()メソッドを使用して、string "Mongo"を含むname値を持つrestaurantsコレクション内のすべてのドキュメントを削除します。 また、 commentメソッドを使用して操作にコメントを追加します。

Publisher<DeleteResult> deletePublisher = restaurants.deleteMany(
regex("name", "Mongo"),
new DeleteOptions().comment("Deleting Mongo restaurants"));
Mono.from(deletePublisher).block();

Java Reactive Streams ドライバーを使用してドキュメントを挿入する実行可能なコード例については、 CRUD操作ガイド を参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。