Overview
このガイドでは、Lambda クエリ ビルダの Lambda 統合 拡張機能を使用して MongoDB database を操作する方法を学習できます。 クエリ ビルダを使用すると、単一の構文とスムーズなインターフェースを使用して、サポートされている任意のデータベースのクエリを作成できます。
注意
Lambel 統合は、Lambel のクエリ ビルダと Eloqueent ORM を拡張し、同様のデータベース操作を実行できます。 効率モデルを使用してドキュメントを取得する方法の詳細については、「読み取り操作 」を参照してください。
Lambda はクエリ ビルダ クラスDBにアクセスするためのファサードを提供し、データベース操作を実行できるようにします。 クラスへの静的インターフェースである ファサード は、構文をより簡潔にし、ランタイム エラーを回避し、テスト可能性を向上させます。
Lambda 統合では、コレクションにアクセスするためのDBメソッドtable()が提供されます。 コマンドと制約を指定するためのチェーンメソッド。 次に、最後にget()メソッドをチェーンしてメソッドを実行し、結果を取得します。 次の例は、クエリ ビルダを呼び出す構文を示しています。
DB::table('<collection name>') // chain methods by using the "->" object operator ->get();
Tip
DB::table()メソッドを使用する前に、アプリケーションのデフォルトのデータベース接続として MongoDB を指定していることを確認してください。 データベース接続を設定する手順については、クイック スタートの「 MongoDB 接続の構成 」の手順を参照してください。
MongoDB がアプリケーションのデフォルトのデータベースでない場合は、 DB::connection()メソッドを使用して MongoDB 接続を指定できます。 次のコードに示すように、 connection()メソッドに接続名を渡します。
$connection = DB::connection('mongodb');
このガイドでは、次のタイプのクエリ ビルダ操作の例を取り上げます。
始める前に
このガイドのコード例を実行するには、クイック スタートチュートリアル を完了して、Web アプリケーションを構成し、 サンプル データセット を MongoDB 配置にロードして、 コントローラー メソッドからサンプル コードを実行します。 期待されるコード出力を JSON ドキュメントとして確認するには、クイック スタートのオプションの「 JSON ドキュメントとして結果を表示する 」ステップに示されているtoJson()メソッドを使用します。
クエリ ビルダを使用して読み取りおよび書込み操作を実行するには、 Illuminate\Support\Facades\DBファサードをインポートしてクエリを作成します。
一致するドキュメントの取得
このセクションには、次の演算子カテゴリの読み取り操作のクエリ ビルダの例が含まれています。
メソッドの例
次の例は、 where()クエリ ビルダ メソッドを使用して、 imdb.ratingフィールド値が正確に9.3であるドキュメントをmoviesコレクションから検索する方法を示しています。 クエリによって返される結果を確認するには、[ VIEW OUTPUT ] ボタンをクリックします。
$result = DB::connection('mongodb') ->table('movies') ->where('imdb.rating', 9.3) ->get();
論理条件演算
このセクションの例では、次の論理条件操作を実行するために使用できるクエリビルダの構文を示します。
論理和の例
次の例は、 orWhere()クエリ ビルダ メソッドを連鎖させて、 1955のyear値に一致する、またはtitle値"Back to the Future"に一致するドキュメントをmoviesコレクションから検索する方法を示しています。
$result = DB::connection('mongodb') ->table('movies') ->where('year', 1955) ->orWhere('title', 'Back to the Future') ->get();
論理 AND の例
次の例は、 where()クエリ ビルダ メソッドを連鎖させて、 8.5より大きいimdb.rating値と1940より小さいyear値の両方に一致するドキュメントをmoviesコレクションから検索する方法を示しています。
$result = DB::connection('mongodb') ->table('movies') ->where('imdb.rating', '>', 8.5) ->where('year', '<', 1940) ->get();
論理和の例
次の例では、 whereNot()クエリ ビルダ メソッドを呼び出して、 imdb.ratingの値が2より大きくないドキュメントに一致するドキュメントをmoviesコレクションから検索する方法を示します。 これは、 imdb.ratingが2以下であるすべてのドキュメントをマッチングすることと同じです。
$result = DB::connection('mongodb') ->table('movies') ->whereNot('imdb.rating', '>', 2) ->get();
ネストされた論理演算子グループの例
次の例では、 where()クエリ ビルダ メソッドを連鎖させて、次の条件の両方に一致するドキュメントをmoviesコレクションから検索する方法を示します。 この例では、論理 OR グループをグループ化するために、 where()クエリ ビルダ メソッドの最初のパラメータとして包含を渡します。
imdb.ratingの値が より大きい8.5year値は1986または1996のいずれかです
$result = DB::connection('mongodb') ->table('movies') ->where('imdb.rating', '>', 8.5) ->where(function (Builder $query) { return $query ->where('year', 1986) ->orWhere('year', 1996); })->get();
範囲とタイプのチェック
このセクションの例は、次の範囲クエリと型チェック操作を使用して値を一致させるために使用できるクエリビルダの構文を示しています。
数値範囲の例
次の例は、 whereBetween()クエリ ビルダ メソッドを使用して、 9と9.5の間のimdb.rating値を含むドキュメントをmoviesコレクションから検索する方法を示しています。
$result = DB::connection('mongodb') ->table('movies') ->whereBetween('imdb.rating', [9, 9.5]) ->get();
NULL または欠損値の例
次の例は、 whereNull()クエリ ビルダ メソッドを使用して、 runtime値または フィールドを省略するドキュメントをmoviesコレクションから検索する方法を示しています。
$result = DB::connection('mongodb') ->table('movies') ->whereNull('runtime') ->get();
セットの 1 つ以上の値の例
次の例は、 whereIn()クエリ ビルダ メソッドを使用して、指定されたセット内のtitle値の少なくとも 1 つと一致するドキュメントをmoviesコレクションから検索する方法を示しています。
$result = DB::table('movies') ->whereIn('title', ['Toy Story', 'Shrek 2', 'Johnny English']) ->get();
一致日付の例
次の例は、 whereDate()クエリ ビルダ メソッドを使用して、 releasedフィールド内の2010-1-15の指定された日付に一致するドキュメントをmoviesコレクションから検索する方法を示しています。
$result = DB::connection('mongodb') ->table('movies') ->whereDate('released', '2010-1-15') ->get();
テキストパターン一致の例
次の例は、 where()クエリビルダ メソッドでlikeクエリ演算子を使用し、指定されたテキスト パターンを使用してmoviesコレクションからドキュメントを検索する方法を示しています。
テキストパターンには、次のワイルドカード文字と混合したテキストを含めることができます。
%0 文字以上の文字に一致する_単一の文字に一致する
$result = DB::table('movies') ->where('title', 'like', '%spider_man%') ->get();
whereLike() メソッドと whereNotLike() メソッド
次のメソッドは、パターンを一致させるためにクエリ演算子 を使用するのと同じ機能を提供します。
whereLike(): 指定されたパターンに一致します。 デフォルトでは、このメソッドは大文字と小文字を区別しない一致を実行します。 メソッドの最後のパラメータとしてtrueを渡すことで、大文字と小文字の区別を有効にすることができます。whereNotLike(): フィールド値に指定されたstringパターンが含まれていないドキュメントと一致します。
次の例は、 whereLike()メソッドを使用して、大文字と小文字の区別が有効になっているパターン'Start%'と一致する値がtitleフィールドにあるドキュメントを一致させる方法を示しています。
$result = DB::connection('mongodb') ->table('movies') ->whereLike('title', 'Start%', true) ->get();
Retrieve Distinct Values
次の例は、 distinct()クエリ ビルダー メソッドを使用して、 moviesコレクション内のドキュメントのyearフィールドのさまざまな値をすべて検索する方法を示しています。
$result = DB::table('movies') ->distinct('year')->get();
集計
このセクションの例では、集計を実行するために使用できるクエリ ビルダの構文を示します。 集計は、クエリ結果データのセットから値を計算する操作です。 集計を使用して、次の情報を計算して返すことができます。
一般的なフィールド値でグループ化された結果の例
次の例は、 groupBy()クエリ ビルダ メソッドを使用して、 runtimeフィールドの共有値でグループ化されたドキュメント データを取得する方法を示しています。 この例では、次の操作を連鎖させて、 Gのrated値を含み、かつ個別のruntime値ごとに 1 つの映画のtitleフィールドを含むmoviesコレクションのドキュメントを照合します。
where()メソッドを使用して、ratedフィールド値が"G"であるドキュメントのみをマッチングするgroupBy()メソッドを使用して、_idフィールドに割り当てられているruntimeフィールドの個別の値でデータをグループ化しますorderBy()メソッドを使用して、runtimeフィールドでグループを並べ替えますグループ化された結果内の最後のドキュメントの
titleデータを、get()メソッドで指定して返します
Tip
groupBy()メソッドは MongoDB $group集計演算子と$lastアキュムレータ演算子を呼び出します。 これらの演算子の詳細については、サーバー マニュアルの$group(集計)を参照してください。
$result = DB::table('movies') ->where('rated', 'G') ->groupBy('runtime') ->orderBy('runtime', 'asc') ->get(['title']);
結果数の例
次の例は、 count()クエリ ビルダ メソッドを使用してmoviesコレクションに含まれるドキュメントの数を返す方法を示しています。
$result = DB::table('movies') ->count();
フィールド例の最大値
次の例は、 max()クエリ ビルダ メソッドを使用して、 moviesコレクション全体からruntimeフィールドの最大の数値を返す方法を示しています。
$result = DB::table('movies') ->max('runtime');
フィールドの例の最小値
次の例は、 min()クエリ ビルダ メソッドを使用して、 moviesコレクション全体からyearフィールドの最小の数値を返す方法を示しています。
$result = DB::table('movies') ->min('year');
フィールド例の平均値
次の例は、 avg()クエリ ビルダ メソッドを使用して、 moviesコレクション全体からimdb.rating値の数値平均または算術平均を返す方法を示しています。
$result = DB::table('movies') ->avg('imdb.rating');
フィールドの合計値の例
次の例は、 sum()クエリ ビルダ メソッドを使用して、 moviesコレクション全体からimdb.votes値の数値合計を返す方法を示しています。
$result = DB::table('movies') ->sum('imdb.votes');
一致した結果の集計の例
次の例では、クエリに一致する結果からデータを集計する方法を示しています。 クエリは、 2000年以降のすべての映画に一致しており、 avg()メソッドを使用して、それらの一致のimdb.ratingの平均値を計算します。
$result = DB::table('movies') ->where('year', '>', 2000) ->avg('imdb.rating');
クエリレベルのオプションを設定する
クエリ ビルダでオプションを設定することで、Lambda 統合が操作を実行する方法を変更できます。 オプションの配列を options() クエリ ビルダ メソッドに渡して、クエリのオプションを指定できます。
次のコードは、クエリにコメントを添付する方法を示しています。
$result = DB::connection('mongodb') ->table('movies') ->where('year', 2000) ->options(['comment' => 'hello']) ->get();
The query builder accepts the same options that you can set for the find() method in the MongoDB PHP Library. Some of the options to modify query results, such as skip, sort, and limit, are settable directly as query builder methods and are described in the Modify Query Results section of this guide. We recommend that you use these methods instead of passing them as options.
クエリ結果の変更
このセクションには、クエリ結果の順序と形式を変更する次の関数のクエリ ビルダの例が含まれています。
注文結果の例
次の例は、 orderBy()クエリ ビルダ メソッドを使用して、 titleフィールドに指定されたフィルターに一致する結果をimdb.ratingの値で降順に配置する方法を示しています。
$result = DB::table('movies') ->where('title', 'like', 'back to the future%') ->orderBy('imdb.rating', 'desc') ->get();
指定した数の結果を省略する例
次の例では、 skip()クエリ ビルダ メソッドを使用して、 titleフィールドに指定されたフィルターに一致する最初の 4 つの結果を除外する方法を示します。 year値の昇順でソートします。
$result = DB::table('movies') ->where('title', 'like', 'star trek%') ->orderBy('year', 'asc') ->skip(4) ->get();
結果の例に含まれるフィールドと配列値のサブセットの表示
次の例では、 project()クエリ ビルダ メソッドを使用して、 8.5よりも高いimdb.rating値を含むドキュメントを照合し、次のフィールド値のみを返す方法を示します。
内の映画のタイトル
titlecast配列フィールドの 2 番目から 4 番目の値(存在する場合)ドキュメント
_idフィールド(自動的に含まれる)
$result = DB::table('movies') ->where('imdb.rating', '>', 8.5) ->project([ 'title' => 1, 'cast' => ['$slice' => [1, 3]], ]) ->get();
結果のページ分割の例
次の例では、 paginate()クエリ ビルダー メソッドを使用して、 movieコレクション全体を15ドキュメントの個別の結果セットに分割する方法を示します。 この例には、 imdb.votesフィールドの結果を降順で配置するための並べ替え順序と、結果に特定のフィールドのみを含むプロジェクションも含まれています。
$resultsPerPage = 15; $projectionFields = ['title', 'runtime', 'imdb.rating']; $result = DB::table('movies') ->orderBy('imdb.votes', 'desc') ->paginate($resultsPerPage, $projectionFields);
ページネーションの詳細については、Lambda ドキュメントの「クエリ ビルダの結果のページ分割」を参照してください。
MongoDB 操作を使用したデータの取得
このセクションには、次の MongoDB 固有のクエリ操作の使用方法を示すクエリ ビルダの例が含まれています。
フィールドの例が含まれています
次の例は、 exists()クエリ ビルダ メソッドを使用して、フィールドrandom_reviewを含むドキュメントを一致させる方法を示しています。
$result = DB::table('movies') ->exists('random_review', true);
このクエリ演算子の詳細については、サーバー マニュアルの$existsを参照してください。
すべてのフィールドの例を含む
次の例は、 allクエリ演算子とwhere()クエリ ビルダ メソッドを使用して、指定されたすべてのフィールドを含むドキュメントを照合する方法を示しています。
$result = DB::table('movies') ->where('movies', 'all', ['title', 'rated', 'imdb.rating']) ->get();
このクエリ演算子の詳細については、サーバー マニュアルの$allを参照してください。
配列サイズに一致する例
次の例は、 where()クエリビルダ メソッドでsizeクエリ演算子を渡し、5 つの要素だけの配列を含むdirectorsフィールドを含むドキュメントを一致させる方法を示しています。
$result = DB::table('movies') ->where('directors', 'size', 5) ->get();
To learn more about this query operator, see $size in the Server manual.
一致データ型の例
次の例では、 where()クエリビルダ メソッドでtypeクエリ演算子を渡し、 releasedフィールドに配列データ型に対応するタイプ4の値を含むドキュメントを照合する方法を示します。
$result = DB::table('movies') ->where('released', 'type', 4) ->get();
型コードとクエリ演算子の詳細については、サーバー マニュアルの$typeを参照してください。
剰余の例えで計算された値に一致
次の例は、 where()クエリビルダ メソッドでmodクエリ演算子を渡し、 yearフィールドの偶数値に一致する式year % 2 == 0を使用してドキュメントを照合する方法を示しています。
$result = DB::table('movies') ->where('year', 'mod', [2, 0]) ->get();
このクエリ演算子の詳細については、サーバー マニュアルの$modを参照してください。
正規表現に一致する
次の例は、 where()クエリビルダ メソッドでREGEXクエリ演算子を渡し、指定された正規表現に一致するtitleフィールドを含むドキュメントを照合する方法を示しています。
$result = DB::connection('mongodb') ->table('movies') ->where('title', 'REGEX', new Regex('^the lord of .*', 'i')) ->get();
To learn more about regular expression queries in MongoDB, see $regex in the Server manual.
MongoDB Query API 操作の実行例
次の例は、 whereRaw()クエリビルダー メソッドを使用して、MongoDB Query API 構文を使用して記述されたクエリ操作を実行する方法を示しています。
$result = DB::table('movies') ->whereRaw([ 'imdb.votes' => ['$gte' => 1000 ], '$or' => [ ['imdb.rating' => ['$gt' => 7]], ['directors' => ['$in' => [ 'Yasujiro Ozu', 'Sofia Coppola', 'Federico Fellini' ]]], ], ])->get();
次のコードは、同等の MongoDB Query API 構文を示しています。
db.movies.find({ "imdb.votes": { $gte: 1000 }, $or: [{ imdb.rating: { $gt: 7 }, directors: { $in: [ "Yasujiro Ozu", "Sofia Coppola", "Federico Fellini" ] } }]});
To learn more about the MongoDB Query API, see MongoDB Query API in the Server manual.
配列要素の一致の例
次の例は、 where()クエリビルダ メソッドでelemMatchクエリ演算子を渡し、指定されたクエリ内の条件の 1 つ以上に一致する配列要素を含むドキュメントを検索する方法を示しています。
$result = DB::table('movies') ->where('writers', 'elemMatch', ['$in' => ['Maya Forbes', 'Eric Roth']]) ->get();
To learn more about regular expression queries in MongoDB, see the $elemMatch operator in the Server manual.
カーソル タイムアウトの指定の例
次の例では、 timeout()メソッドを使用してカーソル操作の完了まで待機する最大期間を指定する方法を示します。
$result = DB::table('movies') ->timeout(2) // value in seconds ->where('year', 2001) ->get();
注意
この設定では、ミリ秒ではなく秒単位でmaxTimeMS値を指定します。 maxTimeMS値の詳細については、PHP ライブラリのドキュメントのMongoDBCollection::find()を参照してください。
地理空間操作を使用したロケーションの一致
このセクションの例では、クエリ ビルダの構文を使用して GeoJSON または座標ペア データに対して地理空間クエリを実行し、次のタイプのロケーションを検索できます。
重要
MongoDB で GeoJSON クエリを実行するには、コレクションに2dまたは2dsphereインデックスのいずれかを作成する必要があります。 地理空間インデックスの作成方法については、「 スキーマ ビルダ 」のガイドの「 地理空間インデックスの作成」セクションを参照してください。
To learn more about GeoJSON objects that MongoDB supports, see GeoJSON Objects in the Server manual.
位置の例えに近い
次の例は、 nearクエリ演算子とwhere()クエリ ビルダ メソッドを使用して、GeoJSON ポイント オブジェクトから最大50メートルのロケーションを含むドキュメントを一致させる方法を示しています。
$results = DB::table('theaters') ->where('location.geo', 'near', [ '$geometry' => [ 'type' => 'Point', 'coordinates' => [ -86.6423, 33.6054, ], ], '$maxDistance' => 50, ])->get();
この演算子の詳細については、サーバー マニュアルの「 $near 演算子」を参照してください。
エリア内の例
次の例は、 geoWithinクエリ演算子とwhere()クエリ ビルダ メソッドを使用して、指定されたPolygon GeoJSON オブジェクトの境界内のロケーションを含むドキュメントを照合する方法を示しています。
$results = DB::table('theaters') ->where('location.geo', 'geoWithin', [ '$geometry' => [ 'type' => 'Polygon', 'coordinates' => [ [ [-72, 40], [-74, 41], [-72, 39], [-72, 40], ], ], ], ])->get();
ジオメトリの交差の例
次の例は、 geoInstersectsクエリ演算子とwhere()クエリ ビルダ メソッドを使用して、指定されたLineString GeoJSON オブジェクトと交差するロケーションを含むドキュメントを照合する方法を示しています。
$results = DB::table('theaters') ->where('location.geo', 'geoIntersects', [ '$geometry' => [ 'type' => 'LineString', 'coordinates' => [ [-73.600525, 40.74416], [-72.600525, 40.74416], ], ], ])->get();
近傍一致の近接データの例
次の例では、 geoNear集計演算子とraw()クエリ ビルダ メソッドを組み合わせて、各一致の近接性情報などのメタデータを返す集計を実行する方法を示します。
$results = DB::table('theaters')->raw( function (Collection $collection) { return $collection->aggregate([ [ '$geoNear' => [ 'near' => [ 'type' => 'Point', 'coordinates' => [-118.34, 34.10], ], 'distanceField' => 'dist.calculated', 'maxDistance' => 500, 'includeLocs' => 'dist.location', 'spherical' => true, ], ], ]); }, )->toArray();
To learn more about this aggregation operator, see $geoNear operator in the Server manual.
MongoDB 書込み操作を使用したデータの書込み
このセクションには、次の MongoDB 固有の書込み操作の使用方法を示すクエリ ビルダの例が含まれています。
ドキュメントのアップサートの例
v 4.7以降、 次のクエリ ビルダのメソッドのいずれかを使用して、アップサート操作を実行できます。
upsert(): このメソッドを使用すると、バッチ アップサートを実行して 1 回の操作で複数のドキュメントを変更または挿入できます。update(): このメソッドを使用する場合、クエリフィルターに一致するすべてのドキュメントを更新するか、一致するドキュメントがない場合は 1 つのドキュメントを挿入するために、upsertオプションを指定する必要があります。 このアップサート メソッドのみが v 4.6以前のバージョンではサポートされています。
アップサートの方法
upsert(array $values, array|string $uniqueBy, array|null $update)クエリ ビルダのメソッドは次のパラメータを受け入れます。
$values: 更新または挿入するドキュメントを指定するフィールドと値の配列。$uniqueBy: 最初の配列パラメータでドキュメントを一意に識別するフィールドのリスト。$update: 一致するドキュメントが存在する場合に更新するフィールドの任意のリスト。 このパラメーターを省略すると、Lambda 統合によってすべてのフィールドが更新されます。
以下の例では、 upsert()クエリ ビルダ メソッドを使用して、次の手順に基づいてドキュメントを更新または挿入する方法を示しています。
titleフィールドの値が'Inspector Maigret'、recommendedフィールドの値がfalse、runtimeフィールドの値が128であるドキュメントを指定します。titleフィールドの値が'Petit Maman'、recommendedフィールドの値がtrue、runtimeフィールドの値が72であるドキュメントを指定します。titleフィールドが操作範囲内のドキュメントを一意に識別することを示します。一致したドキュメントの
recommendedフィールドのみをアップデートします。
$result = DB::table('movies') ->upsert( [ ['title' => 'Inspector Maigret', 'recommended' => false, 'runtime' => 128], ['title' => 'Petit Maman', 'recommended' => true, 'runtime' => 72], ], 'title', 'recommended', );
upsert()クエリ ビルダ メソッドは、操作によって更新、挿入、変更されたドキュメントの数を返します。
注意
upsert() メソッドは イベントをtriggerしません。 アップサート操作からイベントをtriggerするには、代わりに createOrFirst() メソッドを使用できます。
更新方法
次の例は、 update()クエリビルダー メソッドとupsertオプションを使用して一致するドキュメントをアップデートするか、存在しない場合は指定されたデータでドキュメントを挿入する方法を示しています。 upsertオプションをtrueに設定し、かつドキュメントが存在しない場合、コマンドはデータとwhere()クエリ操作で指定されたtitleフィールドと値の両方を挿入します。
$result = DB::table('movies') ->where('title', 'Will Hunting') ->update( [ 'plot' => 'An autobiographical movie', 'year' => 1998, 'writers' => [ 'Will Hunting' ], ], ['upsert' => true], );
update()クエリ ビルダ メソッドは、操作によって更新または挿入されたドキュメントの数を返します。
数値の増加の例
次の例は、 increment()クエリ ビルダ メソッドを使用して、一致したドキュメントのimdb.votesフィールドの値に3000を追加する方法を示しています。
$result = DB::table('movies') ->where('title', 'Field of Dreams') ->increment('imdb.votes', 3000);
increment()クエリ ビルダ メソッドは、操作によって更新されたドキュメントの数を返します。
Lambda 統合 v 4.8以降 また、 incrementEach()クエリ ビルダ メソッドを使用して、1 回の操作で複数の値を増加させることもできます。 incrementEach()次の例では、awards.wins imdb.votesメソッドを使用して、一致したドキュメントの フィールドと フィールドの値を増やします。
$result = DB::table('movies') ->where('title', 'Lost in Translation') ->incrementEach([ 'awards.wins' => 2, 'imdb.votes' => 1050, ]);
注意
値がないフィールド、または一致したドキュメントに存在しないフィールドをincrement()メソッドまたはincrementEach()メソッドに渡すと、これらのメソッドは指定されたフィールドを増分値に初期化します。
数値の減算の例
次の例は、 decrement()クエリ ビルダ メソッドを使用して、一致したドキュメントのimdb.ratingフィールドの値から0.2を減算する方法を示しています。
$result = DB::table('movies') ->where('title', 'Sharknado') ->decrement('imdb.rating', 0.2);
decrement()クエリ ビルダ メソッドは、操作によって更新されたドキュメントの数を返します。
Lambda 統合 v 4.8以降 また、 decrementEach()クエリ ビルダ メソッドを使用して、1 回の操作で複数の値を減算することもできます。 decrementEach()次の例では、metacritic imdb.ratingメソッドを使用して、一致したドキュメントの フィールドと フィールドの値を減らします。
$result = DB::table('movies') ->where('title', 'Dunkirk') ->decrementEach([ 'metacritic' => 1, 'imdb.rating' => 0.4, ]);
注意
値がないフィールド、または一致したドキュメントに存在しないフィールドをdecrement()メソッドまたはdecrementEach()メソッドに渡すと、これらのメソッドは指定されたフィールドを減算値に初期化します。
配列要素を追加する例
次の例は、 push()クエリビルダ メソッドを使用して、一致したドキュメントのcast配列フィールドに"Gary Cole"を追加する方法を示しています。
$result = DB::table('movies') ->where('title', 'Office Space') ->push('cast', 'Gary Cole');
push()クエリ ビルダ メソッドは、操作によって更新されたドキュメントの数を返します。
配列要素の削除の例
次の例は、 pull()クエリ ビルダ メソッドを使用して、クエリに一致するドキュメントのgenresフィールドから"Adventure"値を削除する方法を示しています。
$result = DB::table('movies') ->where('title', 'Iron Man') ->pull('genres', 'Adventure');
pull()クエリ ビルダ メソッドは、操作によって更新されたドキュメントの数を返します。
フィールドを削除する例
次の例は、 unset()クエリ ビルダ メソッドを使用して、クエリに一致するドキュメントからtomatoes.viewerフィールドと値を削除する方法を示しています。
$result = DB::table('movies') ->where('title', 'Final Accord') ->unset('tomatoes.viewer');
unset()クエリ ビルダ メソッドは、操作によって更新されたドキュメントの数を返します。