AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Delete Documents

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

削除操作は、MongoDB コレクションから 1 つ以上のドキュメントを削除します。 削除操作は、 MongoDB\Collection::deleteOne()またはMongoDB\Collection::deleteMany()メソッドを使用して実行できます。

このガイドの例では、 Atlasサンプルデータセットsample_restaurantsデータベースのrestaurantsコレクションを使用します。 PHPアプリケーションからこのコレクションにアクセスするには、Atlas クラスターに接続するMongoDB\Clientをインスタンス化し、次の値を$collection変数に割り当てます。

$collection = $client->sample_restaurants->restaurants;

MongoDB配置を作成し、サンプルデータセットをロードする方法については、MongoDBの使用開始ガイドを参照してください。

次の方法を使用して削除操作を実行できます。

  • MongoDB\Collection::deleteOne()は、検索条件に一致する最初のドキュメントを削除します。

  • MongoDB\Collection::deleteMany()は、検索条件に一致するすべてのドキュメントを削除します

各削除メソッドにはクエリフィルタードキュメントが必要です。このドキュメントは、削除対象として選択するドキュメントを決定するための検索条件を指定します。 クエリフィルターの詳細については、 MongoDB Serverマニュアルの「クエリフィルター ドキュメント 」セクションを参照してください。

次の例では、 deleteOne()メソッドを使用して、 nameの値が'Ready Penny Inn'であるrestaurantsコレクション内のドキュメントを削除します。

$collection->deleteOne(['name' => 'Ready Penny Inn']);

次の例では、 deleteMany()メソッドを使用して、 boroughの値が'Brooklyn'であるrestaurantsコレクション内のすべてのドキュメントを削除します。

$collection->deleteMany(['borough' => 'Brooklyn']);

オプション値を指定する配列をパラメーターとして渡すことで、 MongoDB\Collection::deleteOne()メソッドとMongoDB\Collection::deleteMany()メソッドの動作を変更できます。 次の表では、 配列に設定できるオプションについて説明しています。

オプション
説明

collation

string を比較するときに使用する言語照合の種類を指定します。詳細については、このページの「照合」セクションを参照してください。

writeConcern

操作の書込み保証 (write concern)を設定します。 このオプションはデフォルトで、コレクションの書込み保証 (write concern)になります。 詳細については、 MongoDB Serverマニュアルの「 書込み保証 」を参照してください。

hint

ドキュメントをスキャンするインデックスを取得または設定します。 詳細については、MongoDB Server マニュアルのヒント ステートメントを参照してください。

let

操作の読みやすさを向上させるために、 の値のリストを含むドキュメントを指定します。 値は、ドキュメントフィールドを参照しない定数または閉じた式である必要があります。 詳細については、 MongoDB Serverマニュアルの let ステートメントを参照してください。

session

操作に関連付けるクライアントセッションを指定します。 詳細については、 MongoDB Serverマニュアルの「 セッション 」を参照してください。

comment

操作にコメントを付けます。 詳細については、 MongoDB Serverマニュアルの 「削除コマンド フィールドのガイド」を参照してください。

操作の 照合 を指定するには、collation オプションを設定する $options 配列パラメータを操作メソッドに渡します。照合ルールを構成する配列に collation オプションを割り当てます。

次の表では、照合を構成するために設定できるフィールドについて説明しています。

フィールド
説明

locale

(必須)Unicode 用の国際コンポーネント(ICU)ロケールを指定します。サポートされているロケールのリストについては、 MongoDB Serverマニュアルの 「照合ロケールとデフォルト パラメーター」

を参照してください。データ型:string

caseLevel

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

trueに設定すると、比較動作は フィールドの値によって異なります。strength

strength 1の場合、 PHPライブラリは基本文字と大文字と小文字を比較します。


- がstrength 2の場合、 PHPライブラリは基本文字、発音区別符号、その他のセカンダリ
レベルの相違、大文字と小文字を比較します。

-strength がその他の値の場合、このフィールドは無視されます。

falseに設定されている場合、 PHPライブラリには強度レベル1 または2

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

caseFirst



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

strength

(任意) ICU

ドキュメントで定義されている比較のレベルを指定します。データ型:int
デフォルト:3

numericOrdering

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

trueに設定されている場合、 PHPライブラリは数字の string を数値として比較します。例、string10 と " "2 を比較する場合、ライブラリは string の数値を使用し、"10 " を "2 " より大きいものとして扱います。

falseに設定されている場合、 PHPライブラリは数字の string を string として比較します。例、string "10 " と " " を比較する場合、ライブラリは一度に2 1 文字ずつ比較し、" " を10 "2 " より小さいものとして扱います。詳細については、

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

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

alternate



(任意)ライブラリが空白と句読点を比較目的の基本文字として考慮するかどうかを指定します。データ型:string
デフォルト:"non-ignorable"

maxVariable

(任意) alternate"shifted"フィールドが

に設定されている場合にライブラリが無視可能と見なす文字を指定します。データ型:string
デフォルト:"punct"

backwards

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

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

照合と各フィールドに可能な値の詳細については、 MongoDB Serverマニュアルの「 照合 」エントリを参照してください。

次の例では、 deleteMany()メソッドを呼び出して、 name値に string 'Mongo'が含まれるrestaurantsコレクション内のすべてのドキュメントを削除します。 また、配列パラメータのcommentオプションを設定して、操作にコメントを追加します。

$collection->deleteMany(
['name' => new MongoDB\BSON\Regex('Mongo')],
['comment' => 'Deleting Mongo restaurants'],
);

注意

前述の例でdeleteMany()メソッドをdeleteOne()に置き換えると、ライブラリはname値に'Mongo'を含む最初のドキュメントのみを削除します。

MongoDB\Collection::deleteOne()メソッドとMongoDB\Collection::deleteMany()メソッドはMongoDB\DeleteResultオブジェクトを返します。 このクラスには、次のメンバー関数が含まれています。

  • isAcknowledged()は、操作が確認されたかどうかを示すブール値を返します。

  • getDeletedCount()は、削除されたドキュメントの数を返します。 書込み (write)操作が確認されなかった場合、このメソッドはエラーをスローします。

クエリフィルターがどのドキュメントにも一致しない場合、ドライバーはドキュメントを削除せず、 getDeletedCount()0を返します。

次の例では、 deleteMany()メソッドを呼び出して、 cuisineの値が'Greek'であるドキュメントを削除します。 次に、 getDeletedCount()ノード関数を呼び出して、削除されたドキュメント数を出力します。

$result = $collection->deleteMany(['cuisine' => 'Greek']);
echo 'Deleted documents: ', $result->getDeletedCount(), PHP_EOL;
Deleted documents: 111

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。