Overview
このガイドでは、削除操作を使用して MongoDB コレクションからドキュメントを削除する方法を学習できます。
このガイドには、次のセクションが含まれています。
サンプル データの例では、削除操作の例で使用されるサンプル データが示されています
「削除操作」では、ドライバーを使用して削除操作を実行する方法について説明します
追加情報では、このガイドで言及されている型とメソッドのリソースとAPIドキュメントへのリンクを提供します
サンプルデータの例
このガイドの例では、次のサンプル ドキュメントを使用します。 各ドキュメントは、店舗の在庫内の商品を表し、その分類と単価に関する情報が含まれています。
{ "item": "trowel", "category": "garden", "unit_price": 9.89 }, { "item": "placemat", "category": "kitchen", "unit_price": 3.19 }, { "item": "watering can", "category": "garden", "unit_price": 11.99 }
削除操作
Rust ドライバーは、削除操作を実行するための delete_one()およびdelete_many()メソッドを提供します。
パラメーター
delete_one()メソッドとdelete_many()メソッドは、クエリフィルターをパラメーターとして受け取ります。 クエリフィルターは、一致するドキュメントの基準を形成するフィールドと値で構成されます。
オプションで、どちらのメソッドにもパラメーターとしてDeleteOptions型を渡すこともできます。 削除操作を構成するには、 DeleteOptionsインスタンスで 設定を指定します。 各設定でデフォルト値を使用するには、オプション パラメータとして値Noneを指定します。
注意
インスタンス化オプション
Rust ドライバーは、 DeleteOptionsを含む多くのさまざまなタイプを作成するためのビルダ設計パターンを実装します。 各タイプのbuilder()メソッドを使用して、オプション ビルダー関数を 1 つずつ連鎖させてオプション インスタンスを構築できます。
次の表では、 DeleteOptionsインスタンスで指定できる設定について説明しています。
オプション | 説明 |
|---|---|
| The collation to use when sorting results. To learn more about collations,
see the Collations guide. Type: CollationDefault: None |
| The write concern for the operation. If you don't set this
option, the operation inherits the write concern set for
the collection. To learn more about write concerns, see
Write Concern in the
Server manual. Type: WriteConcern |
| The index to use for the operation. To learn more about
indexes, see Indexes in the Server
manual. This option is available only when connecting to
MongoDB Server versions 4.4 and later. Type: HintDefault: None |
| A map of parameters and values. These parameters can be accessed
as variables in aggregation expressions. This option is available
only when connecting to MongoDB Server versions 5.0 and later. Type: Document |
| An arbitrary Bson value tied to the operation to trace
it through the database profiler, currentOp, and
logs. This option is available only when connecting to
MongoDB Server versions 4.4 and later.Type: BsonDefault: None |
次のコードは、 DeleteOptionsインスタンスを構築し、それをdelete_one()メソッドに渡す方法を示しています。
let opts: DeleteOptions = DeleteOptions::builder().comment(bson!("hello!")).build(); let res = my_coll.delete_one(filter, opts).await?;
戻り値
delete_one()メソッドとdelete_many()メソッドはDeleteResult型を返します。 このタイプには、削除されたドキュメント数を示すdeleted_countプロパティが含まれています。 指定したクエリフィルターに一致するドキュメントがない場合、削除操作によってドキュメントは削除されず、 deleted_countの値は0になります。
delete_many() の例
以下の例では、次のパラメータを使用してdelete_many()メソッドを呼び出す方法を示しています。
categoryの値が"garden"であるドキュメントに一致するクエリフィルター削除操作のヒントとして
_id_インデックスを使用するDeleteOptionsインスタンス
let filter = doc! { "category": "garden" }; let hint = Hint::Name("_id_".to_string()); let opts: DeleteOptions = DeleteOptions::builder().hint(hint).build(); let res = my_coll.delete_many(filter, opts).await?; println!("Deleted documents: {}", res.deleted_count);
Deleted documents: 2
注意
上記のコード例でdelete_many()ではなくdelete_one()メソッドを使用すると、ドライバーはクエリフィルターに一致する 2 つのドキュメントのうち最初のドキュメントのみを削除します。
詳細情報
削除操作の実行可能な例については、次の使用例を参照してください。
このガイドの操作の詳細については、次のドキュメントを参照してください。
API ドキュメント
このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。