Overview
このガイドでは、削除操作を使用して MongoDB コレクションからドキュメントを削除する方法を学習できます。
サンプル データ
このガイドの例では、 sample_restaurantsデータベースのrestaurantsコレクションを使用します。 このコレクションのドキュメントでは、次のRestaurant 、 Address 、 GradeEntryクラスをモデルとして使用します。
public class Restaurant { public ObjectId Id { get; set; } public string Name { get; set; } [] public string RestaurantId { get; set; } public string Cuisine { get; set; } public Address Address { get; set; } public string Borough { get; set; } public List<GradeEntry> Grades { get; set; } }
public class Address { public string Building { get; set; } [] public double[] Coordinates { get; set; } public string Street { get; set; } [] public string ZipCode { get; set; } }
public class GradeEntry { public DateTime Date { get; set; } public string Grade { get; set; } public float? Score { get; set; } }
注意
restaurantsコレクションのドキュメントは、スニペット ケースの命名規則を使用します。このガイドの例では、ConventionPack を使用してコレクション内のフィールドをパスカル ケースに逆シリアル化し、Restaurantクラスのプロパティにマップします。
カスタム直列化について詳しくは、「カスタム直列化」を参照してください。
このコレクションは、Atlas が提供するサンプルデータセットから構成されています。無料のMongoDBクラスターを作成し、このサンプルデータをロードする方法については、 .NET/ C#ドライバーを使い始める を参照してください。
削除操作
削除操作 を使用して、クエリフィルターに一致するドキュメントを削除します。 クエリフィルターは、 クエリフィルター ドキュメントの条件に基づいて、どのレコードが削除対象として選択されるかを決定します。 MongoDB では、次の方法で削除操作を実行できます。
DeleteOne()は、クエリフィルターに一致する最初のドキュメントを削除します。DeleteMany()は、クエリフィルターに一致するすべてのドキュメントを削除します
単一ドキュメントの削除
次のコードは、同期 DeleteOne() メソッドまたは非同期 DeleteOneAsync() メソッドを使用して 1 つのドキュメントを削除する方法を示しています。
var result = _restaurantsCollection.DeleteOne(filter);
var result = await _restaurantsCollection.DeleteOneAsync(filter);
複数のドキュメントの削除
次のコードは、同期 DeleteMany() メソッドまたは非同期 DeleteManyAsync() メソッドを使用して、一致したドキュメントをすべて削除する方法を示しています。
var result = _restaurantsCollection.DeleteMany(filter);
var result = await _restaurantsCollection.DeleteManyAsync(filter);
Tip
これらのメソッドを使用して実行可能な例については、追加情報を参照してください。
パラメーター
DeleteOne()メソッドとDeleteMany()メソッドでは、一致するドキュメントを指定するクエリフィルターを渡す必要があります。 クエリフィルターの作成方法について詳しくは、「 ドキュメントのクエリ 」のチュートリアルを参照してください。
Both methods optionally take a DeleteOptions type as an additional parameter, which represents options you can use to configure the delete operation. DeleteOptionsプロパティを指定しない場合、ドライバーは削除操作をカスタマイズしません。
DeleteOptionsタイプでは、次のプロパティを持つオプションを構成できます。
プロパティ | 説明 |
|---|---|
| 結果をソートするときに使用する言語照合のタイプを取得または設定します。詳細については、このページの「照合」セクションを参照してください。 |
| 操作のコメントを取得または設定します。 詳細については、削除コマンド フィールドを参照してください。 |
| ドキュメントをスキャンするために使用するインデックスを取得または設定します。 詳細については、「 delete ステートメント」を参照してください。 |
| let ドキュメントを取得または設定します。 詳細については、削除コマンド フィールドを参照してください。 |
照合
操作の照合を構成するには、照合クラスのインスタンスを作成します。
次の表では、Collation コンストラクターが受け入れるパラメーターを説明しています。また、各設定の値を読み取るために使用できる対応するクラスプロパティも一覧表示されます。
Parameter | 説明 | クラスプロパティ |
|---|---|---|
| Unicode 用の国際コンポーネント(ICU)ロケールを指定します。サポートされているロケールのリストについては、 MongoDB Serverマニュアルの 「照合ロケールとデフォルト パラメーター」 を参照してください。単純なバイナリ比較を使用する場合は、 |
|
| (任意)大文字と小文字の比較を含めるかどうかを指定します。この引数が |
|
|
|
|
|
| |
| (任意)ドライバーが数字の string を数値として比較するかどうかを指定します。この引数が |
|
| (任意) |
|
| (任意) |
|
|
|
|
| (任意)発音区別符号を含む string を、string |
|
照合の詳細については、 MongoDB Serverマニュアルの 照合 ページを参照してください。
例
次のコードでは、 DeleteMany()メソッドを使用して「bool_ 1 」インデックスを検索し、 address.streetフィールド値に "Pearl Center" というフレーズが含まれるすべてのドキュメントを削除します。
var filter = Builders<Restaurant>.Filter .Regex("address.street", "Pearl Street"); DeleteOptions opts = new DeleteOptions { Hint = "borough_1" }; Console.WriteLine("Deleting documents..."); var result = _restaurantsCollection.DeleteMany(filter, opts); Console.WriteLine($"Deleted documents: {result.DeletedCount}"); Console.WriteLine($"Result acknowledged? {result.IsAcknowledged}");
Deleting documents... Deleted documents: 26 Result acknowledged? True
Tip
上記の例でDeleteMany()ではなくDeleteOne()メソッドが使用されている場合、ドライバーは26に一致したドキュメントの最初の を削除します。
戻り値
DeleteOne()メソッドとDeleteMany()メソッドはDeleteResult型を返します。 このタイプには、削除されたドキュメント数を示すDeletedCountプロパティと、結果が確認されたかどうかを示すIsAcknowledgedプロパティが含まれています。 クエリフィルターがどのドキュメントにも一致しない場合、ドキュメントは削除されず、 DeletedCountは0です。
詳細情報
削除操作の実行可能な例については、次の使用例を参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。