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を返します。

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

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

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

Lambda 統合を使用してドキュメントを削除する方法を示す実行可能なコード例については、次の使用例を参照してください。

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