정의
$indexStatscollection의 각 인덱스 사용에 관한 통계를 반환합니다. 액세스 제어를 함께 실행하는 경우 최소한
clusterMonitor역할이 있는 사용자로 인증합니다.$indexStats단계는 빈 문서를 취하며 다음과 같은 구문을 갖습니다.{ $indexStats: { } }각 인덱스에 대해 반환 문서에는 다음 필드가 포함됩니다.
출력 필드설명name인덱스 이름
인덱스 키 사양입니다.
참조: 사양
mongod프로세스의 호스트 이름 및 포트입니다.관련 호스팅하다에 대한 인덱스 사용량 지표는 다음을 포함합니다.
ops: 인덱스 를 사용한 사용자 작업의 수입니다. 이 값에는 TTL 인덱스에 의한 삭제 또는 청크 분할 및 마이그레이션 작업과 같은 내부 작업은 제외됩니다. 이 제외 대상에는 초기 동기화 중 oplog 애플리케이션 및 인덱스 빌드와 같은 복제 통한 인덱스 액세스 도 포함됩니다.since: MongoDB가 통계를 수집한 시간입니다.
경고:
accesses필드는 쿼리가 실행되는 노드에 대한 인덱스 사용 지표만 보고합니다. 보다 포괄적인 인덱스 사용 통계를 보려면 클러스터의 각 노드에서$indexStats을 실행합니다.호스트와 연결된 샤드의 이름입니다.
샤딩된 클러스터에서만 사용할 수 있습니다.
인덱스 키와 인덱스 속성을 포함하는 인덱스에 대한 전체 사양 문서입니다.
인덱스 옵션
hidden(은)는 값이true인 경우에만 포함됩니다.인덱스가 현재 작성 중인지 여부를 나타냅니다.
true인 경우에만 사용할 수 있습니다.
행동
액세스 필드
액세스 필드 에서 보고하는 통계는 쿼리 실행 중인 노드 에만 적용 사용자 요청에 의한 인덱스 액세스 만 포함됩니다. accesses 필드 다음과 같은 내부 연산을 제외합니다:
TTL 인덱스별 삭제
청크 분할 및 마이그레이션 작업
초기 동기화 중 oplog 애플리케이션 및 인덱스 빌드와 같은 복제 에서 인덱스 액세스
제한 사항
$indexStats는 집계 파이프라인의 첫 번째 단계여야 합니다.$indexStats은(는) 거래에서 허용되지 않습니다.
인덱스 통계 재설정 고려 사항
예시
다음 예시에서는 sample_mflix 샘플 데이터 집합의 movies 컬렉션을 사용합니다. 배포서버에 이 데이터세트를 로드하는 방법은 샘플 데이터세트 로드를 참조하세요.
movies 컬렉션 에 다음 인덱스를 생성합니다.
db.movies.createIndex( { year: 1, title: 1 } )db.movies.createIndex( { rated: 1, year: 1 } )db.movies.createIndex( { metacritic: 1 }, { partialFilterExpression: { rated: "R" } })collection에 대해 몇 가지 쿼리를 실행합니다.
db.movies.find( { rated: "R" } )db.movies.find( { year: 1994 } ).sort( { title: 1 } )db.movies.find( { metacritic: { $gt: 90 } } )다음 집계 작업은 movies 컬렉션 의 각 인덱스 에 대한 사용 통계가 포함된 문서 반환합니다.
db.movies.aggregate( [ { $indexStats: { } } ] )[ { name: 'year_1_title_1', key: { year: 1, title: 1 }, host: ..., accesses: ..., spec: { v: 2, key: { year: 1, title: 1 }, name: 'year_1_title_1' } }, { name: 'rated_1_year_1', key: { rated: 1, year: 1 }, host: ..., accesses: ..., spec: { v: 2, key: { rated: 1, year: 1 }, name: 'rated_1_year_1' } }, { name: 'metacritic_1', key: { metacritic: 1 }, host: ..., accesses: ..., spec: { v: 2, key: { metacritic: 1 }, name: 'metacritic_1', partialFilterExpression: { rated: 'R' } } }, { name: '_id_', key: { _id: 1 }, host: ..., accesses: ..., spec: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'cast_text_fullplot_text_genres_text_title_text', key: { _fts: 'text', _ftsx: 1 }, host: ..., accesses: ..., spec: ... }]MongoDB Node.js 운전자 사용하여 집계 파이프라인 에 $indexStats 단계를 추가하려면 파이프라인 객체 에서 $indexStats 연산자 사용합니다.
다음 예시 컬렉션 의 각 인덱스 에 대한 사용 통계가 포함된 문서 반환하는 파이프라인 단계를 만듭니다. 그런 다음 이 예시 에서는 집계 파이프라인 실행합니다.
const pipeline = [{ $indexStats: {} }];
const cursor = collection.aggregate(pipeline);return cursor;