フェデレーティッドデータベースインスタンスのクエリ履歴の取得
$queryHistory
(集計)を使用して、過去7日間に実行されたクエリの詳細を取得できます。 $queryHistory
は、過去7日間実行されたの集計、 find 、カウントクエリに関する情報を含むドキュメントをクエリごとに 1 つずつ返します。 $queryHistory
によって返されたフィールドは、 $match
などの後続のパイプライン ステージでフィルタリングできます。
$queryHistory
を実行するには、 db.aggregateヘルパーを使用します。 admin
データベースに対して$queryHistory
を実行します。
構文
{ $queryHistory: { allUsers: <boolean> } }
フィールド
フィールド | タイプ | 説明 | 必要性 |
---|---|---|---|
allUsers | ブール値 | すべてのユーザーが実行したクエリのドキュメントを取得するかどうかを示します。 有効な値は以下のとおりです。
このオプションを使用するには、クラスターリソースに対する 省略した場合、デフォルトは | 任意 |
出力
$queryHistory
によって返される各ドキュメントには次のフィールドが含まれます。
フィールド | タイプ | 説明 |
---|---|---|
appName | string | クエリを発行したアプリケーションの名前(使用可能な場合)。 |
background | ブール値 | クエリがバックグラウンドで実行されたかどうかを示すフラグ。 値は次のいずれかになります。
|
collection | string | クエリが実行されたコレクションの名前。 |
comment | string | クエリに関連付けられたコメント(使用可能な場合)。 クエリにコメントが含まれていない場合は、空にします。 |
db | string | クエリが実行されたコレクションを含むデータベースの名前。 |
endTime | クエリの完了時間。 | |
error | string | クエリによって返された場合、エラー。 クエリ ステータス 0 はエラーを示していることに注意してください。 クエリが正常に実行された場合は、空string 。 |
ok | 整数 | クエリのステータス。 値は次のいずれかになります。
|
opid | ObjectId形式の、クエリに関連付けられた操作の一意の識別子。 フィールド値は、エラーやログで確認できる correlationID と同じです。 | |
startTime | クエリの開始時間。 | |
query | ドキュメント | 実行されたクエリ操作。 |
user | string | クエリを実行したユーザーのユーザー名(利用可能な場合)は次の形式で表示されます: <authenticationDatabase>.<username> 。 Atlas Data Federation の認証データベースは常にadmin であることに注意してください。 クエリを実行したユーザーのユーザー名が使用できない場合、値は空になります。 |
例
以下の例では、「 を使い始める 」チュートリアルで説明されているDatabase0.Collection0
コレクションを使用します。
クエリの詳細を取得する
以下の例では、 「 はじめに 」チュートリアルで説明されているクエリの一部が、 Database0
データベース内のCollection0
コレクションでuser1
によって実行されたとします。 次の例では、 Database0.Collection0
コレクションでuser1
によって実行されたクエリに関する情報を返します。
db.aggregate([{$queryHistory: {}}]).pretty()
$queryHistory
は、 Database0.Collection0
コレクションで実行されたクエリごとに 1 つのドキュメントを返します。
{ "_id" : ObjectId("613fa06cf9521f85777d5be8"), "query" : [ { "$match" : { "bedrooms" : 3, "review_scores.review_scores_rating" : { "$gt" : 79 } } }, { "$count" : "numProperties" } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "Database0", "collection" : "Collection0", "opid" : ObjectId("16a476f40ac6d97f22e4aa1f"), "startTime" : ISODate("2021-09-13T19:02:35.589Z"), "endTime" : ISODate("2021-09-13T19:03:08.730Z"), "ok" : 1, "background" : false } { "_id" : ObjectId("613fa0d4f9521f85777d6bc0"), "query" : [ { "$match" : { "bedrooms" : 3 } }, { "$sort" : { "review_scores_rating" : -1 } }, { "$limit" : NumberLong(5) } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "Database0", "collection" : "Collection0", "opid" : ObjectId("16a4770e387f300c22e4bdf2"), "startTime" : ISODate("2021-09-13T19:04:28.184Z"), "endTime" : ISODate("2021-09-13T19:04:52.898Z"), "ok" : 1, "background" : false } { "_id" : ObjectId("613fa0eef9521f85777d6f6f"), "query" : [ { "$match" : { "limit" : { "$eq" : 10000 }, "products" : "Commodity" } }, { "$limit" : NumberLong(5) } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "Database0", "collection" : "Collection0", "opid" : ObjectId("16a477163555e4aa22e4c53b"), "startTime" : ISODate("2021-09-13T19:05:02.342Z"), "endTime" : ISODate("2021-09-13T19:05:18.774Z"), "ok" : 1, "background" : false } { "_id" : ObjectId("613fa147f9521f85777d7b11"), "query" : [ { "$match" : { "name" : /Lannister/ } }, { "$limit" : NumberLong(10) } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "Database0", "collection" : "Collection0", "opid" : ObjectId("16a4771ba072c0a122e4c9bd"), "startTime" : ISODate("2021-09-13T19:05:25.736Z"), "endTime" : ISODate("2021-09-13T19:06:47.147Z"), "ok" : 1, "background" : false } { "_id" : ObjectId("613fb9eccaba4e6430c7dcb7"), "query" : [ { "$group" : { "_id" : "$movies", "Collection0" : { "$push" : "$title" } } }, { "$out" : { "atlas" : { "projectId" : "{PROJECT_ID}", "clusterName" : "mySbx", "db" : "my_test", "coll" : "sample" } } } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "admin", "collection" : "Collection0", "opid" : ObjectId("16a47ceba943e9cc00c98c62"), "startTime" : ISODate("2021-09-13T20:51:56.617Z"), "endTime" : ISODate("2021-09-13T20:51:56.642Z"), "ok" : 1, "background" : true }
特定のクエリの $queryHistory
出力をフィルタリングする
次の例では、 「 はじめに 」チュートリアルで説明されているDatabase0.Collection0
コレクションに対して、次のようなクエリを実行します。
クエリには、 $queryHistory
ステージによって返される結果内でクエリを識別するのに役立つ一意の string が含まれています。集計コマンドcomment
オプションを使用してクエリにコメントを添付できます。
use Database0 db.Collection0.aggregate([ { $match: {"account_id": 557378}},{$sort: {"transactions.symbol": -1}} ],{"comment":"exampleQuery"})
集計コマンドのcomment
オプションの string 値を使用してクエリ履歴を検索するには、 admin
データベースに対して次のコマンドを実行します。
use admin db.aggregate([{$queryHistory: {}}, {$match: {"comment": "exampleQuery"}} ])
$queryHistory
は、指定された string を含むクエリを検索し、次の例のような結果を返します。
[ { "_id": ObjectId("61e1e4c29e62172566d8e9b6"), "query": [ { "$match": { "account_id": 557378} }, { "$sort": { "transactions.symbol": -1 } } ], "comment": "exampleQuery", "appName": "mongosh 1.1.8", "user": "admin.user1", "db": "Database0", "collection": "Collection0", "opid": ObjectId("16ca3ed2577016e68d60358c"), "startTime": ISODate("2022-01-14T21:01:27.346Z"), "endTime": ISODate("2022-01-14T21:01:54.627Z"), "ok": 1, "error": "", "background": false, } ]