Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / /

检索联合数据库实例查询历史记录

在此页面上

  • 语法
  • 字段
  • 输出
  • 示例
  • 检索有关查询的详细信息
  • 过滤特定查询的 $queryHistory 输出

您可以使用 $queryHistory (聚合)来检索过去7天内运行的查询的详细信息。 $queryHistory返回文档(每个查询一个),其中包含有关过去7天内运行的 aggregatefindcount查询的信息。 您可以在后续管道阶段(例如$match )中筛选$queryHistory返回的字段。

要运行$queryHistory ,请使用db.aggregate助手。 针对admin数据库运行$queryHistory

{
$queryHistory: {
allUsers: <boolean>
}
}
字段
类型
说明
必要性
allUsers
布尔

指示是否提取所有用户运行的查询的文档。有效值为:

  • true 获取所有用户运行的查询的文档

  • false 获取仅由当前用户运行的查询的文档

您必须拥有集群资源的 viewAllHistory 权限才能使用此选项。如果您指定此选项,但没有集群资源的 viewAllHistory 权限,数据联合将返回错误。

如果省略,则默认值为 false

Optional

$queryHistory 返回的每个文档都包含以下字段:

字段
类型
说明
appName
字符串
发出查询的应用程序的名称(如果可用)。
background
布尔

指示查询是否在后台运行的标志。值可以是以下值之一:

  • true - 如果查询在 background 选项设置为 true 的情况下运行

  • false — 如果查询未指定 background 选项,或者查询运行时将 background 选项设置为 false

collection
字符串
对其执行查询的集合的名称。
comment
字符串
与查询相关的评论(如果有)。如果查询不包含任何注释,则为空。
db
字符串
包含执行查询的集合的数据库名称。
endTime
查询完成时间。
error
字符串
查询返回的错误(如有)。 请注意,查询状态 0 指示错误。如果查询成功运行,则为空字符串。
ok
int

查询状态。值可以是以下值之一:

  • 1,如果查询成功运行

  • 0,如果执行查询时出现错误

opid
与查询关联的操作的唯一标识符(采用ObjectId格式)。 该字段值与您可以在错误和日志中看到的correlationID相同。
startTime
查询开始时间。
query
文档
已运行的查询操作。
user
字符串
运行查询的用户的用户名(如有),采用以下格式:<authenticationDatabase>.<username>。请注意,Atlas Data Federation 的身份验证数据库始终为 admin。如果运行查询的用户的用户名不可用,则值为空。

以下示例使用 入门教程中描述的 Database0.Collection0 集合。

对于下以下示例,假设入门教程中描述的一些查询由 user1Database0 数据库中的 Collection0 集合上运行。以下示例将返回 user1Database0.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
}

在以下示例中,我们对入门教程中描述的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,
}
]

后退

终止查询