Overview
このガイドでは、Lambda MongoDBがクエリから結果を返す方法をカスタマイズする方法を学習できます。where() メソッドにさらにメソッドを連鎖させることで、検索操作の結果を変更できます。
次のセクションでは、 where()メソッドの動作を変更する方法を示します。
Skip and Limit Results uses the
skip()method to set the number of documents to skip and thetake()method to set the total number of documents to returnSort Query Results uses the
orderBy()method to return query results in a specified order based on field values
Laravel IntegrationにおけるEloquentモデルの詳細を学ぶには、「Eloquent Model クラス」セクションを参照してください。
始める前に
このガイドのコード例を実行するには、「クイック スタート 」チュートリアルを完了してください。 このチュートリアルでは、サンプル データを使用して 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"を渡します。
ドキュメント内の特定のフィールドに重複する値が含まれている場合は、並べ替え対象のフィールドをさらに指定することで同順位に対応できます。 これにより、他のフィールドに一意の値が含まれている場合でも、結果の一貫性が確保されます。
この例では、 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 統合を使用して検索操作を実行する方法を示す実行可能なコード例については、次の使用例を参照してください。
フィルター条件に基づいてデータを取得する方法については、 「データの取得」ガイドを参照してください 。