Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

연합 데이터베이스 인스턴스 쿼리 기록 검색

이 페이지의 내용

  • 구문
  • 필드
  • 출력
  • 예제
  • 쿼리에 대한 세부 정보 검색
  • 특정 쿼리에 대한 $queryHistory 출력 필터링

$queryHistory (애그리게이션)를 사용하여 지난 7 일 동안 실행된 쿼리에 대한 세부 정보를 검색할 수 있습니다. $queryHistory 은(는) 지난 7 일 동안 실행된 애그리게이션, 찾기카운트 쿼리에 대한 정보가 포함된 문서를 쿼리당 하나씩 반환합니다. $match와 같은 후속 파이프라인 단계에서 $queryHistory 에 의해 반환된 필드를 필터링할 수 있습니다.

$queryHistory 을(를) 실행하려면 db.aggregate 헬퍼를 사용합니다. admin 데이터베이스에 대해 $queryHistory 를 실행합니다.

{
$queryHistory: {
allUsers: <boolean>
}
}
필드
유형
설명
필요성
allUsers
부울

모든 사용자가 실행한 쿼리에 대해 문서를 가져올지 여부를 나타냅니다. 유효한 값은 다음과 같습니다.

  • true 을(를) 사용하여 모든 사용자가 실행한 쿼리에 대한 문서를 가져옵니다.

  • false 을(를) 사용하여 현재 사용자가 실행한 쿼리에 대해서만 문서를 가져옵니다.

이 옵션을 사용하려면 클러스터 리소스에 대한 viewAllHistory 권한이 있어야 합니다. 이 옵션을 지정했지만 클러스터 리소스에 대한 viewAllHistory 권한이 없는 경우 Data Federation에서 오류를 반환합니다.

생략하는 경우 기본값은 false입니다.

옵션

$queryHistory에서 반환한 각 문서에는 다음과 같은 필드가 포함되어 있습니다.

필드
유형
설명
appName
문자열
쿼리를 실행한 애플리케이션의 이름(있는 경우)입니다.
background
부울

쿼리가 백그라운드에서 실행되었는지 여부를 나타내는 플래그입니다. 값은 다음 중 하나일 수 있습니다.

  • true - background 옵션이 true로 설정된 상태에서 쿼리가 실행된 경우

  • false - 쿼리가 background 옵션을 지정하지 않았거나 background 옵션이 false로 설정된 상태로 쿼리가 실행된 경우

collection
문자열
쿼리가 실행된 컬렉션의 이름입니다.
comment
문자열
쿼리와 관련된 주석(있는 경우)입니다. 쿼리에 주석이 포함되지 않은 경우 비어 있습니다.
db
문자열
쿼리가 실행된 컬렉션이 포함된 데이터베이스의 이름입니다.
endTime
쿼리 완료 시간입니다.
error
문자열
쿼리에서 반환된 오류(있는 경우)입니다. 쿼리 상태 0 은 오류를 나타냅니다. 쿼리가 성공적으로 실행된 경우 빈 문자열입니다.
queryFilterComments
모든 BSON types배열

쿼리 파이프라인 내부의 $comment 연산자에 포함된 주석 값입니다. 쿼리에 $comment 연산자가 포함되지 않은 경우 생략됩니다.

$comment 연산자 값은 모든 유효한 BSON types일 수 있습니다.

ok
int

쿼리 상태입니다. 값은 다음 중 하나일 수 있습니다.

  • 1쿼리가 성공적으로 실행된 경우

  • 0쿼리를 실행할 때 오류가 발생한 경우

opid
쿼리와 연결된 작업의 고유 식별자( ObjectId 형식)입니다. 필드 값은 오류 및 로그에서 볼 수 있는 correlationID 와(과) 동일합니다.
startTime
쿼리 시작 시간입니다.
query
문서
실행된 쿼리 작업입니다.
user
문자열
쿼리를 실행한 사용자의 사용자 이름(가능한 경우 <authenticationDatabase>.<username> 형식)입니다. Atlas Data Federation의 인증 데이터베이스는 항상 admin입니다. 쿼리를 실행한 사용자의 사용자 이름을 사용할 수 없는 경우 값은 비어 있습니다.

아래 예제에서는 시작하기 튜토리얼에 설명된 Database0.Collection0 컬렉션을 사용합니다.

아래 예제에서는 user1Database0 데이터베이스의 Collection0 컬렉션에서 시작하기 튜토리얼에 설명된 쿼리 중 일부를 실행했다고 가정합니다. 다음 예제는 Database0.Collection0 컬렉션에서 user1가 실행한 쿼리에 대한 정보를 반환합니다.

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 옵션 또는 $comment 연산자를 사용하여 쿼리에 주석을 첨부할 수 있습니다. 이 예제에서는 두 가지 방법을 모두 사용하여 쿼리에 고유 문자열을 첨부합니다.

use Database0
db.Collection0.aggregate([ { $match: {"account_id": 557378, "$comment": "test"}},{$sort: {"transactions.symbol": -1}} ],{"comment":"exampleQuery"})

집계 명령의 옵션의 string 값을 사용하여 쿼리 기록을 검색하려면 데이터베이스에 comment 대해 다음 명령을 admin 실행합니다.

use admin
db.aggregate([{$queryHistory: {}}, {$match: {"comment": "exampleQuery"}} ])

참고

$comment 연산자의 값으로 유효한 모든 BSON types 를 제공할 수 있습니다.

쿼리에서 연산자의 string 값을 사용하여 쿼리 기록을 검색하려면 데이터베이스에 $comment $match 대해 다음 명령을 admin 실행합니다.

use admin
db.aggregate([{$queryHistory: {}}, {$match:
{queryFilterComments: "test"}}])

$queryHistory 지정된 문자열이 포함된 쿼리를 찾아 다음과 유사한 결과를 반환합니다.

[
{
"_id": ObjectId("61e1e4c29e62172566d8e9b6"),
"query": [
{ "$match": { "account_id": 557378, "$comment": "test" } },
{ "$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,
"queryFilterComments": [ "test" ]
}
]

돌아가기

쿼리 종료