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

Delete Documents

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

このセクションでは、次の削除操作の例を示します。

このガイドの操作は、次の Elastic モデルクラス を参照。

Concern.html
<?php
namespace App\Models;
use MongoDB\Laravel\Eloquent\Model;
class Concert extends Model
{
protected $connection = 'mongodb';
protected $fillable = ['performer', 'venue', 'genres', 'ticketsSold', 'performanceDate'];
protected $casts = ['performanceDate' => 'datetime'];
}

Tip

$fillable属性を使用すると、挿入操作に Lambda の一括割り当てを使用できます。 一括割り当ての詳細については、 Elastic モデル クラス ドキュメントの「 一括割り当てのカスタマイズ」を参照してください。

$casts 属性は、属性を一般的なデータ型に変換するように Lambel に指示します。詳細については、Lambda ドキュメントの「 属性キャスティング 」を参照してください。

次の方法で 1 つのドキュメントを削除できます。

  • モデルのインスタンスで$model->delete()メソッドを呼び出します。

  • delete()メソッドを呼び出して、モデルの インスタンスを検索して削除するためのメソッドのチェーン。

  • 削除するドキュメントの _id 値を渡して、モデルで Model::destroy($id) メソッドを呼び出します。

次の例では、 モデルのインスタンスで$model->delete()を呼び出してドキュメントを削除する方法を示しています。

$concert = Concert::first();
$concert->delete();

delete()メソッドが成功すると、操作は削除されたドキュメントの数を返します。

呼び出しの検索部分がコレクション内のどのドキュメントにも一致しない場合、操作は0を返します。

次の例は、呼び出しを連鎖させて最初に一致するドキュメントを検索して削除する方法を示しています。

Concert::where('venue', 'Carnegie Hall')
->limit(1)
->delete();

注意

orderBy()呼び出しは、一貫したソート順序を保証するために、結果を_idフィールドでソートします。 MongoDB でのソートの詳細については、サーバー マニュアルの「自然な順序」の用語集でのエントリを参照してください。

delete()メソッドが成功すると、削除されたドキュメントの数が返されます。

where()メソッドがどのドキュメントにも一致しない場合、 delete()メソッドは0を返します。

次の例では、_id 値の値を Model::destroy($id) メソッドに渡してドキュメントを削除する方法を示しています。

$id = 'MSG-0212252000';
Concert::destroy($id);

destroy()メソッドが成功すると、削除されたドキュメントの数が返されます。

_id の値がどのドキュメントにも一致しない場合、destroy() メソッドは 0 を返します。

複数のドキュメントを次の方法で削除できます。

  • 削除するドキュメントまたはモデル インスタンスの ID のリストを渡して、 Model::destroy($ids)メソッドを呼び出します。

  • メソッドをチェーンして、複数のオブジェクトを参照する Lambda コレクション オブジェクトを取得し、 delete()メソッドを呼び出してそれらを削除します。

次の例では、$idsで表される _id 値の配列を destroy() メソッドに渡してドキュメントを削除する方法を示しています。

$ids = [3, 5, 7, 9];
Concert::destroy($ids);

Tip

大きなリストを渡されると、 destroy()メソッドのパフォーマンスが低下します。 パフォーマンスを向上させるには、代わりにModel::whereIn('id', $ids)->delete()を使用してください。

destroy()メソッドが成功すると、削除されたドキュメントの数が返されます。

_id の値がどのドキュメントにも一致しない場合、destroy() メソッドは 0 を返します。

次の例は、呼び出しを連鎖させて一致するドキュメントを検索して削除する方法を示しています。

Concert::where('ticketsSold', '>', 7500)
->delete();

delete()メソッドが成功すると、削除されたドキュメントの数が返されます。

where()メソッドがどのドキュメントにも一致しない場合、 delete()メソッドは0を返します。

次のセクションでは、Laravelsample_mflix.movies 統合を使用してドキュメントを削除する方法を示す完全に実行可能なコード例を示します。これらの例では、Atlasサンプルデータセットの コレクションを使用します。

Tip

独自の Lambdaアプリケーションまたは スタートガイド で作成されたmy-app アプリケーションから完全な例を実行できます。例では、このチュートリアルで作成されたMovie.php モデルクラスを使用して、movies MongoDBコレクションの操作を示します。操作を実行するには、サンプルコードを Lambdaアプリケーションの コントローラー エンドポイントにコピーします。

操作の期待される出力を表示するには、コントローラー関数を呼び出し、その結果をウェブ インターフェイスに返すウェブ ルートをアプリケーションに追加します。

次の Eloquent タブと Query Builder タブから選択すると、対応する各 クエリ構文の例が表示されます。

この例では、次のアクションを実行します。

  • Movie Eloent モデルを使用して、 sample_mflixデータベース内のmoviesコレクションを表します

  • クエリフィルターに一致するドキュメントをmoviesコレクションから削除します

  • 削除されたドキュメントの数を出力します

この例では、 Movieモデルで次のメソッドを呼び出します。

  • where(): titleフィールドの値が "Quiz Show" であるドキュメントに一致します

  • limit(): 最初に一致するドキュメントのみを検索

  • delete(): 取得されたドキュメントを削除します

$deleted = Movie::where('title', 'Quiz Show')
->limit(1)
->delete();
echo 'Deleted documents: ' . $deleted;
Deleted documents: 1

この例では、次のアクションを実行します。

  • DB ファサードから table() メソッドを呼び出して moviesコレクションにアクセスします

  • クエリフィルターに一致するドキュメントをmoviesコレクションから削除します

  • 削除されたドキュメントの数を出力します

この例では、次のクエリ ビルダのメソッドを呼び出します。

  • where(): titleフィールドの値が "Quiz Show" であるドキュメントに一致します

  • limit(): 最初に一致するドキュメントのみを検索

  • delete(): 取得されたドキュメントを削除します

$deleted = DB::table('movies')
->where('title', 'Quiz Show')
->limit(1)
->delete();
echo 'Deleted documents: ' . $deleted;
Deleted documents: 1

次の Eloquent タブと Query Builder タブから選択すると、対応する各 クエリ構文の例が表示されます。

この例では、次のアクションを実行します。

  • Movie Eloent モデルを使用して、 sample_mflixデータベース内のmoviesコレクションを表します

  • クエリフィルターに一致するドキュメントをmoviesコレクションから削除します

  • 削除されたドキュメントの数を出力します

この例では、 Movieモデルで次のメソッドを呼び出します。

  • where(): yearフィールドの値が 1910 以下のドキュメントに一致します

  • delete(): 一致したドキュメントを削除し、正常に削除されたドキュメントの数を返します

$deleted = Movie::where('year', '<=', 1910)
->delete();
echo 'Deleted documents: ' . $deleted;
Deleted documents: 7

この例では、次のアクションを実行します。

  • DB ファサードから table() メソッドを呼び出して moviesコレクションにアクセスします

  • クエリフィルターに一致するドキュメントをmoviesコレクションから削除します

  • 削除されたドキュメントの数を出力します

この例では、次のクエリ ビルダのメソッドを呼び出します。

  • where(): yearフィールドの値が 1910 以下のドキュメントに一致します

  • delete(): 一致したドキュメントを削除し、正常に削除されたドキュメントの数を返します

$deleted = DB::table('movies')
->where('year', '<=', 1910)
->delete();
echo 'Deleted documents: ' . $deleted;
Deleted documents: 7

Lambel 統合で使用可能な削除動作を変更する Lambel 機能の詳細については、次のセクションを参照してください。

  • ソフト削除。ドキュメントをデータベースから削除するのではなく、削除としてマークできます

  • プルーニング。ドキュメントを自動削除の対象となる条件を定義できます

MongoDBコレクションにドキュメントを挿入する方法については、 「ドキュメントの挿入」ガイドを参照してください。