Delete Documents
Overview
このガイドでは、 Java Reactive Streams ドライバーを使用して、削除操作を実行し、 MongoDBコレクションからドキュメントを削除する方法を学習できます。
削除操作は、 MongoDBコレクションから 1 つ以上のドキュメントを削除します。 削除操作は、 deleteOne()
またはdeleteMany()
メソッドを使用して実行できます。
サンプル データ
このガイドの例では、 Atlasサンプルデータセットのsample_restaurants.restaurants
コレクションを使用します。
無料のMongoDB Atlasクラスターを作成し、サンプルデータセットをロードする方法については、「 を使い始める 」チュートリアルを参照してください。
重要
プロジェクトリ アクター ライブラリ
このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返されたPublisher
インスタンスを消費します。 Project Reactive ライブラリとその使用方法の詳細については、「 使用 開始 」を 参照してください。 (Reactor ドキュメントの参照)。このガイドでは Project React ライブラリ メソッドをどのように使用しているかについて詳しくは、「 MongoDBへのデータの書込み」ガイドを参照してください。
削除操作
MongoDB では、次の方法で削除操作を実行できます。
deleteOne()
は、検索条件に一致する最初のドキュメントを削除します。deleteMany()
は、検索条件に一致するすべてのドキュメントを削除します
各削除方法にはクエリフィルターが必要です。これは、削除対象として選択するドキュメントを決定する検索条件を指定します。 クエリフィルターの詳細については、 MongoDB Serverマニュアルの「クエリフィルター ドキュメント 」セクションを参照してください。
単一ドキュメントの削除
MongoDBコレクションから単一ドキュメントを削除するには、 deleteOne()
メソッドを呼び出し、クエリフィルターを渡します。 次に、 deleteOne()
の結果をMono
から静的Mono.from
メソッドに渡します。 Mono
は、プロジェクト Reactor ライブラリのクラスです。 Java Reactive Streams では、ドライバー メソッドはコールドPublisher
インスタンスを返します。つまり、返されたPublisher
をサブスクライブしないと、対応する操作は実行されません。 このガイドでは、Project Reactor ライブラリを使用してそれらを消費します。 Mono
の詳細については、 MongoDB を参照してください プロジェクト React のドキュメントを参照してください。
次の例では、 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
の詳細については、 MongoDB を参照してください プロジェクト React のドキュメントを参照してください。
次の例では、 borough
の値が"Brooklyn"
であるrestaurants
コレクション内のすべてのドキュメントを排除します。
Publisher<DeleteResult> deletePublisher = restaurants.deleteMany( eq("borough", "Brooklyn")); Mono.from(deletePublisher).block();
削除操作をカスタマイズする
DeleteOptions
クラスには、削除メソッドの動作を変更するメソッドが含まれています。 DeleteOptions
クラスを使用するには、クラスの新しいインスタンスを構築し、1 つ以上のそのメソッドを呼び出して 削除操作を変更します。 これらのメソッド呼び出しを連鎖させることができます。 削除操作の動作を変更するには、クラスインスタンスと連結されたメソッド呼び出しを メソッドまたは メソッドの 2deleteOne()
deleteMany()
番目の引数として渡します。
削除メソッドを変更するには、 DeleteOptions
クラスの次のメソッドを使用します。 すべてのメソッドは任意です。
方式 | 説明 |
---|---|
collation (Collation collation) | Specifies the kind of language collation to use when sorting
results. For more information, see Collation
in the MongoDB Server manual. |
hint (Bson hint) | Gets or sets the index to scan for documents.
For more information, see the hint statement
in the MongoDB Server manual. |
hint (String hint) | Gets or sets the index to scan for documents.
For more information, see the hint statement
in the MongoDB Server manual. |
let (Bson variables) | A map of parameter names and values. Values must be constant or closed
expressions that don't reference document fields. For more information,
see the let statement in the
MongoDB Server manual. |
comment (BsonValue comment) | A comment to attach to the operation. For more information, see the delete command
fields guide in the
MongoDB Server manual for more information. |
comment (String comment) | A comment to attach to the operation. For more information, see the delete command
fields guide in the
MongoDB Server manual for more information. |
例
次のコードでは、 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 ドライバーを使用してドキュメントを挿入する実行可能なコード例については、 「 MongoDBへのデータの書込み」ガイドを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。