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 クラスターを無料で作成して、このサンプル データをロードする方法については、クイック スタートを参照してください。
削除操作
削除操作 を使用して、クエリフィルターに一致するドキュメントを削除します。 クエリフィルターは、 クエリフィルター ドキュメントの条件に基づいて、どのレコードが削除対象として選択されるかを決定します。 MongoDB では、次の方法で削除操作を実行できます。
DeleteOne()は、クエリフィルターに一致する最初のドキュメントを削除します。DeleteMany()は、クエリフィルターに一致するすべてのドキュメントを削除します
単一ドキュメントの削除
次のコードは、非同期DeleteOneAsync()メソッドまたは同期DeleteOne()メソッドを使用して 1 つのドキュメントを削除する方法を示しています。
var result = await _restaurantsCollection.DeleteOneAsync(filter);
var result = _restaurantsCollection.DeleteOne(filter);
複数のドキュメントの削除
次のコードは、非同期DeleteManyAsync()メソッドまたは同期DeleteMany()メソッドを使用して、一致したドキュメントをすべて削除する方法を示しています。
var result = await _restaurantsCollection.DeleteManyAsync(filter);
var result = _restaurantsCollection.DeleteMany(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タイプでは、次のプロパティを持つオプションを構成できます。
プロパティ | 説明 |
|---|---|
| Gets or sets the type of language collation to use when sorting
results. See the delete
statements
for more information. |
| Gets or sets the comment for the operation. See the delete command
fields
for more information. |
| Gets or sets the index to use to scan for documents. See the delete
statements
for more information. |
| Gets or sets the let document. See the delete command
fields
for more information. |
例
次のコードでは、 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 ドキュメントを参照してください。