Overview
このガイドでは、 MongoDBでクエリのログ記録を有効にする方法を学習できます。クエリのロギングは、クエリをデバッグし、データベースのインタラクションを監視するのに役立ちます。
始める前に
このガイドのコード例を実行するには、 クイック スタートチュートリアルを完了します。 このチュートリアルでは、サンプル データを使用して MongoDB Atlas インスタンスを設定し、Lambda ウェブ アプリケーションで次のファイルを作成する手順を説明します。
Movie.php
ファイル(movies
コレクション内のドキュメントを表すMovie
モデルを含む)MovieController.php
ファイル(データベース操作を実行するためのshow()
関数を含む)browse_movies.blade.php
データベース操作の結果を表示するための HTML コードを含む ファイル
次のセクションでは、Laravel アプリケーション内のファイルを編集して検索操作コード例を実行し、期待される出力を表示する方法について説明します。
接続でのログの有効化
接続でログを有効にするには、DB
ファサードで enableQueryLog()
メソッドを使用します。このメソッドにより、データベース接続で実行するクエリに対してMongoDBコマンドのログ記録が有効になります。
クエリ ロギングを有効にすると、実行されるすべてのクエリはメモリに保存されます。ログを検索するには、次のいずれかの方法を使用します。
getQueryLog()
: MongoDBクエリのログを返しますgetRawQueryLog()
: 未加工のMongoDBクエリのログを返します
次の例では、クエリ ロギングを有効にし、いくつかのクエリを実行してから クエリログを出力します。
DB::connection('mongodb')->enableQueryLog(); Movie::where('title', 'Carrie')->get(); Movie::where('year', '<', 2005)->get(); Movie::where('imdb.rating', '>', 8.5)->get(); $logs = DB::connection('mongodb')->getQueryLog(); foreach ($logs as $log) { echo json_encode($log, JSON_PRETTY_PRINT) . PHP_EOL; }
{ "query": "{ \"find\" : \"movies\", \"filter\" : { \"title\" : \"Carrie\" } }", "bindings": [], "time": 29476 } { "query": "{ \"find\" : \"movies\", \"filter\" : { \"year\" : { \"$lt\" : { \"$numberInt\" : \"2005\" } } } }", "bindings": [], "time": 29861 } { "query": "{ \"find\" : \"movies\", \"filter\" : { \"imdb.rating\" : { \"$gt\" : { \"$numberDouble\" : \"8.5\" } } } }", "bindings": [], "time": 27251 }
詳細情報
MongoDB への接続の詳細については、「接続ガイド」を参照してください。
フィルター条件に基づいてデータを取得する方法については、 「データの取得」ガイドを参照してください 。