检索联合数据库实例查询历史记录
您可以使用 $queryHistory
(聚合)来检索过去7天内运行的查询的详细信息。 $queryHistory
返回文档(每个查询一个),其中包含有关过去7天内运行的 aggregate 、 find和count查询的信息。 您可以在后续管道阶段(例如$match
)中筛选$queryHistory
返回的字段。
要运行$queryHistory
,请使用db.aggregate助手。 针对admin
数据库运行$queryHistory
。
语法
{ $queryHistory: { allUsers: <boolean> } }
字段
字段 | 类型 | 说明 | 必要性 |
---|---|---|---|
allUsers | 布尔 | 指示是否提取所有用户运行的查询的文档。有效值为:
您必须拥有集群资源的 如果省略,则默认值为 | Optional |
输出
$queryHistory
返回的每个文档都包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
appName | 字符串 | 发出查询的应用程序的名称(如果可用)。 |
background | 布尔 | 指示查询是否在后台运行的标志。值可以是以下值之一:
|
collection | 字符串 | 对其执行查询的集合的名称。 |
comment | 字符串 | 与查询相关的评论(如果有)。如果查询不包含任何注释,则为空。 |
db | 字符串 | 包含执行查询的集合的数据库名称。 |
endTime | 查询完成时间。 | |
error | 字符串 | 查询返回的错误(如有)。 请注意,查询状态 0 指示错误。如果查询成功运行,则为空字符串。 |
ok | int | 查询状态。值可以是以下值之一:
|
opid | 与查询关联的操作的唯一标识符(采用ObjectId格式)。 该字段值与您可以在错误和日志中看到的 correlationID 相同。 | |
startTime | 查询开始时间。 | |
query | 文档 | 已运行的查询操作。 |
user | 字符串 | 运行查询的用户的用户名(如有),采用以下格式: <authenticationDatabase>.<username> 。请注意,Atlas Data Federation 的身份验证数据库始终为 admin 。如果运行查询的用户的用户名不可用,则值为空。 |
示例
以下示例使用 入门教程中描述的 Database0.Collection0
集合。
检索有关查询的详细信息
对于下以下示例,假设入门教程中描述的一些查询由 user1
在 Database0
数据库中的 Collection0
集合上运行。以下示例将返回 user1
在 Database0.Collection0
集合上运行的查询信息。
db.aggregate([{$queryHistory: {}}]).pretty()
$queryHistory
为在 Database0.Collection0
集合上运行的每个查询返回一个文档。
{ "_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
阶段返回的结果中识别该查询。您可以使用聚合命令comment
选项将注释附加到查询。
use Database0 db.Collection0.aggregate([ { $match: {"account_id": 557378}},{$sort: {"transactions.symbol": -1}} ],{"comment":"exampleQuery"})
要使用 聚合string comment
命令的 选项的 值检索查询历史记录,请对admin
数据库运行以下命令:
use admin db.aggregate([{$queryHistory: {}}, {$match: {"comment": "exampleQuery"}} ])
$queryHistory
查找包含指定字符串的查询,并返回类似以下内容的结果:
[ { "_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, } ]