Overview
このガイドでは、Lambda MongoDBがクエリから結果を返す方法をカスタマイズする方法を学習できます。where() メソッドにさらにメソッドを連鎖させることで、検索操作の結果を変更できます。
次のセクションでは、 where()メソッドの動作を変更する方法を示します。
スキップして結果を制限するには、
skip()メソッドを使用してスキップするドキュメント数を設定し、take()メソッドを使用して返されるドキュメントの合計数を設定しますクエリ結果のソート
orderBy()メソッドを使用して、フィールド値に基づいて指定された順序でクエリ結果を返します。
Laravel 統合の Eloquent モデルの詳細について詳しくは、データのモデル化セクションを参照してください。
始める前に
このガイドのコード例を実行するには、「クイック スタート 」チュートリアルを完了してください。 このチュートリアルでは、サンプル データを使用して MongoDB Atlas インスタンスを設定し、Lambda ウェブ アプリケーションで次のファイルを作成する手順を説明します。
Movie.phpファイル(moviesコレクション内のドキュメントを表すMovieモデルを含む)MovieController.phpファイル(データベース操作を実行するためのshow()関数を含む)browse_movies.blade.phpデータベース操作の結果を表示するための HTML コードを含む ファイル
次のセクションでは、Laravel アプリケーション内のファイルを編集して検索操作コード例を実行し、期待される出力を表示する方法について説明します。
結果をスキップして結果を制限する
この例では、 yearの値が1999であるドキュメントをクエリします。 この操作では、一致する最初の2ドキュメントがスキップされ、合計で3ドキュメントが出力されます。
クエリを指定するには、次の構文を使用します。
$movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get();
browse_moviesビューでクエリ結果を表示するには、 MovieController.phpファイルのshow()関数を次のコードのように編集します。
class MovieController { public function show() { $movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
クエリ結果のソート
指定されたフィールドの値に基づいてクエリ結果を順序付けするには、 where()メソッドとそれに続くorderBy()メソッドを使用します。
結果に対して昇順または降順の並べ替え方向を設定できます。 デフォルトでは、 orderBy()メソッドは指定されたフィールド名に対して昇順の並べ替えを設定しますが、2 番目のパラメーターとして"asc"を渡すことで、昇順の並べ替えを明示的に指定できます。 降順の並べ替えを指定するには、2 番目のパラメーターとして"desc"を渡します。
Tip
SortDirection 列挙
Lambda 統合 v5.7 以降では、次の SortDirection列挙値を orderBy() メソッドに渡して並べ替え方向を指定することもできます。
SortDirection::Ascending昇順ソートの場合SortDirection::Descending、降順ソートの場合
この列挙は Laravel 13.8 以降で利用可能です。
ドキュメント内の特定のフィールドに重複する値が含まれている場合は、並べ替え対象のフィールドをさらに指定することで同順位に対応できます。 これにより、他のフィールドに一意の値が含まれている場合でも、結果の一貫性が確保されます。
この例では、 countriesフィールドの値に"Indonesia"が含まれているドキュメントをクエリし、最初にyearフィールドで昇順に並べ替え、次にtitleフィールドで降順で並べ替えます。
クエリを指定するには、次の構文を使用します。
$movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get();
browse_moviesビューでクエリ結果を表示するには、 MovieController.phpファイルのshow()関数を次のコードのように編集します。
class MovieController { public function show() { $movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
詳細情報
Lambda 統合を使用して検索操作を実行する方法を示す実行可能なコード例については、次の使用例を参照してください。
フィルター条件に基づいてデータを検索する方法については、 「MongoDB データの検索」ガイドを参照してください。