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

Delete Documents

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

このガイドの例では、 sample_restaurantsデータベースのrestaurantsコレクションを使用します。 このコレクションのドキュメントでは、次のRestaurantAddressGradeEntryクラスをモデルとして使用します。

public class Restaurant
{
public ObjectId Id { get; set; }
public string Name { get; set; }
[BsonElement("restaurant_id")]
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; }
[BsonElement("coord")]
public double[] Coordinates { get; set; }
public string Street { get; set; }
[BsonElement("zipcode")]
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タイプでは、次のプロパティを持つオプションを構成できます。

プロパティ
説明

Collation

結果をソートするときに使用する言語照合のタイプを取得または設定します。詳細については、このページの「照合」セクションを参照してください。

Comment

操作のコメントを取得または設定します。 詳細については、削除コマンド フィールドを参照してください。

Hint

ドキュメントをスキャンするために使用するインデックスを取得または設定します。 詳細については、「 delete ステートメント」を参照してください。

Let

let ドキュメントを取得または設定します。 詳細については、削除コマンド フィールドを参照してください。

操作の照合を構成するには、照合クラスのインスタンスを作成します。

次の表では、Collation コンストラクターが受け入れるパラメーターを説明しています。また、各設定の値を読み取るために使用できる対応するクラスプロパティも一覧表示されます。

Parameter
説明
クラスプロパティ

locale

Unicode 用の国際コンポーネント(ICU)ロケールを指定します。サポートされているロケールのリストについては、 MongoDB Serverマニュアルの 「照合ロケールとデフォルト パラメーター」 を参照してください。単純なバイナリ比較を使用する場合は、

Collation.SimpleCollationlocale静的プロパティを使用して、 が"simple" に設定されている
オブジェクトを返します。データ型:string

Locale

caseLevel

(任意)大文字と小文字の比較を含めるかどうかを指定します。この引数が

trueの場合、ドライバーの動作は 引数の値によって異なります。strength

strengthCollationStrength.Primary の場合、ドライバーは基本文字と大文字と小文字を比較します。
- がstrength CollationStrength.Secondaryの場合、ドライバーは基本文字、発音区別符号、その他のセカンダリ レベルの相違、大文字と小文字を比較します。
-strength がその他の値の場合、この引数は無視されます。この引数が

falseの場合、ドライバーは強度レベルPrimary またはSecondary

での大文字と小文字の比較を含めません。データ型:boolean
デフォルト:false

CaseLevel

caseFirst



(任意)三次レベルの比較中に、大文字と小文字の相違のソート順序を指定します。データ型: CollationCateFirst
デフォルト:CollationCaseFirst.Off

CaseFirst

strength

(任意) ICU

ドキュメントで定義されている比較のレベルを指定します。データ型: 照合強度
デフォルト:CollationStrength.Tertiary

Strength

numericOrdering

(任意)ドライバーが数字の string を数値として比較するかどうかを指定します。この引数が

trueの場合、ドライバーは数字の string を数値として比較します。例、string "10 " と "2 " を比較する場合、ドライバーはその値を10 と2 として処理し、 が大きいことが検出されます。この引数が10

falseまたは除外されている場合、ドライバーは数字の string を string として比較します。例、string "10 " と "2 " を比較する場合、ドライバーは一度に 1 文字をずつ比較します。1 2"10 " は " " より小さいため、ドライバーは " " が "2 " より小さいことが検出されます。詳細については、

MongoDB Serverマニュアルの「 照合制限

」を参照してください。データ型:boolean
デフォルト:false

NumericOrdering

alternate

(任意)

ドライバーが空白と句読点を比較目的の基本文字として考慮するかどうかを指定します。データ型: CollationAlternate
デフォルト:CollationAlternate.NonIgnorable (スペースと句読点は基本文字と見なされます)

Alternate

maxVariable

(任意) alternateCollationAlternate.Shifted引数が

の場合にドライバーが無視可能と見なす文字を指定します。データ型: CollectionMaxVvariable
デフォルト:CollationMaxVariable.Punctuation (ドライバーは句読点とスペースを無視します)

MaxVariable

normalization



(任意)ドライバーが必要に応じてテキストを正規化するかどうかを指定します。ほとんどのテキストは正規化を必要としません。正規化の詳細については、 ICU

のドキュメントを参照してください。データ型:boolean
デフォルト:false

Normalization

backwards

(任意)発音区別符号を含む string を、string

の後ろから前にソートするかどうかを指定します。データ型:boolean
デフォルト:false

Backwards

照合の詳細については、 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 ドキュメントを参照してください。