문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

설명합니다.

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 명령 필드
  • 행동
  • 출력
  • 예제
explain

explain 명령은 aggregate, count, distinct, find, findAndModify, delete, mapReduce, update명령의 실행에 대한 정보를 제공합니다. .

mongosh 에서 이 명령은 db.collection.explain()cursor.explain() 헬퍼 메서드를 통해서도 실행할 수 있습니다.

헬퍼 메서드는 mongosh 사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 않을 수 있습니다. 편의가 필요하지 않거나 추가 반환 필드가 필요한 경우 database 명령을 사용합니다.

참고

explain 를 사용하면 기존의 모든 계획 캐시 항목이 무시되고 MongoDB 쿼리 플래너가 새 계획 캐시 항목을 만들 수 없습니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.

명령은 다음과 같은 구문을 가집니다:

db.runCommand(
{
explain: <command>,
verbosity: <string>,
comment: <any>
}
)

이 명령은 다음 필드를 사용합니다.

필드
유형
설명
explain
문서
실행 정보를 반환할 명령을 지정하는 문서입니다. 특정 명령 문서에 대한 자세한 내용은 aggregate, count, distinct, find, findAndModify, delete, mapReduceupdate를 참조하세요.
verbosity
문자열

선택 사항. 실행할 모드를 지정하는 문자열 explain. 이 모드는 explain 의 동작에 영향을 미치고 반환할 정보의 양을 결정합니다.

가능한 모드는 다음과 같습니다.

  • "queryPlanner"

  • "executionStats"

  • "allPlansExecution" (기본값)

모드에 대한 자세한 내용은 동작 설명을참조하세요.

comment
어떤

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

참고

comment 없이 explain을 지정하면 explain에 지정된 명령의 모든 comment를 상속합니다.

explain 의 동작과 반환되는 정보의 양은 verbosity 모드에 따라 다릅니다.

쓰기 작업의 경우 explain 명령은 수행될 쓰기 작업에 대한 정보를 반환하지만 실제로 데이터베이스를 수정하지는 않습니다.

Stable API V1은 explain 명령에 대해 다음과 같은 상세 모드를 지원합니다.

경고

MongoDB는 Stable API를 사용하는 경우에도 explain 명령의 특정 출력 형식을 보장하지 않습니다.

$out단계가 포함된aggregation pipeline에 대해서는 executionStats 모드 또는 allPlansExecution 모드에서 explain 명령/db.collection.explain() 을 실행할 수 없습니다. 대신 다음 중 하나를 수행할 수 있습니다.

  • queryPlanner 모드에서 설명 실행 또는

  • executionStats 모드 또는 allPlansExecution 모드에서 설명을 실행하되 $out 단계 없이 실행하여 $out 이전의 단계에 대한 정보를 반환합니다.

explain 작업은 다음과 관련된 정보를 반환할 수 있습니다.

  • explainVersion, 출력 형식 버전(예: "1")입니다.

  • command은(는) 설명 중인 명령을 자세히 설명합니다.

  • queryPlanner 쿼리 옵티마이저 에서 선택한 계획을 자세히 설명하고 거부된 계획을 나열합니다.

  • executionStats은(는) 성공적인 계획과 거부된 계획의 실행을 자세히 설명합니다.

  • serverInfoMongoDB 인스턴스에 대한 정보를 제공합니다.

  • serverParameters내부 매개변수를 자세히 설명합니다.

다변성 모드(예: queryPlanner, executionStats, allPlansExecution)는 결과에 executionStats를 포함되는지 여부와 executionStats요금제 선택 중 캡처한 데이터가 포함되는지 여부를 결정합니다.

Explain 출력은 BSON 문서의 최대 중첩 깊이(중첩 수준 100단계)로 제한됩니다. 한도를 초과하는 Explain 출력은 잘립니다.

출력에 대한 자세한 내용은 Explain 결과 항목을 참조하세요.

다음 explain 명령은 "queryPlanner" 상세도 모드에서 실행되어 count 명령에 대한 쿼리 계획 정보를 반환합니다.

db.runCommand(
{
explain: { count: "products", query: { quantity: { $gt: 50 } } },
verbosity: "queryPlanner"
}
)

다음 explain 작업은 "executionStats" 상세도 모드에서 실행되어 count 명령에 대한 쿼리 계획 및 실행 정보를 반환합니다.

db.runCommand(
{
explain: { count: "products", query: { quantity: { $gt: 50 } } },
verbosity: "executionStats"
}
)

기본적으로 explain 는 상세도 모드에서 실행됩니다. 다음 "allPlansExecution" explain 명령은 queryPlanner executionStats 명령에 대해 고려되는 모든 계획에 대해 update 및 를 반환합니다.

참고

이 explain을 실행하면 데이터가 수정되지 않지만 업데이트 작업의 쿼리 술어가 실행됩니다. 후보 계획의 경우, MongoDB는 계획 선택 단계에서 캡처한 실행 정보를 반환합니다.

db.runCommand(
{
explain: {
update: "products",
updates: [
{
q: { quantity: 1057, category: "apparel" },
u: { $set: { reorder: true } }
}
]
}
}
)
← driverOIDTest
기능 →