정의
$indexStats컬렉션 의 각 인덱스 사용에 관한 통계를 반환합니다. 액세스 제어 로 실행 하는 경우 최소한
clusterMonitor역할 이 있는 사용자로 인증합니다.$indexStats단계는 빈 문서를 사용하며 구문은 다음과 같습니다.{ $indexStats: { } } 각 인덱스에 대해 반환 문서에는 다음 필드가 포함됩니다.
출력 필드설명name인덱스 이름
인덱스 키 사양입니다.
참조: 사양.
mongod프로세스의 호스트 이름 및 포트입니다.다음을 포함하여 연결된 호스팅하다 에 대한 인덱스 사용량 지표 :
ops: 인덱스 를 사용한 사용자 작업의 수입니다. 여기에는 TTL 인덱스를 통한 삭제나 청크 분할 및 마이그레이션 작업과 같은 내부 작업은 포함되지 않습니다.since: MongoDB 통계를 수집한 시간
경고:
accesses필드 쿼리 실행되는 노드 에 대한 인덱스 사용량 지표 만 보고합니다. 보다 포괄적인 인덱스 사용 통계를 보려면 클러스터$indexStats의 각 노드 에서 를 실행 .인덱스 키와 인덱스 속성을 포함하는 인덱스에 대한 전체 사양 문서입니다.
인덱스 옵션
hidden(은)는 값이true인 경우에만 포함됩니다.인덱스가 현재 작성 중인지 여부를 나타냅니다.
true인 경우에만 사용할 수 있습니다.
행동
액세스 필드
액세스 필드 에서 보고하는 통계는 쿼리 실행 중인 노드 에만 적용 사용자 요청에 의한 인덱스 액세스 만 포함됩니다. TTL 인덱스를 통한 삭제나 청크 분할 및 마이그레이션 작업과 같은 내부 작업은 포함되지 않습니다.
제한 사항
$indexStats는 집계 파이프라인의 첫 번째 단계여야 합니다.$indexStats은(는) 거래에서 허용되지 않습니다.
인덱스 통계 재설정 고려 사항
예시
예를 들어 orders 컬렉션에는 다음과 같은 문서가 포함되어 있습니다.
db.orders.insertMany( [ { _id : 1, item : "abc", price : 12, quantity : 2, type: "apparel" }, { _id : 2, item : "jkl", price : 20, quantity : 1, type: "electronics" }, { _id : 3, item : "abc", price : 10, quantity : 5, type: "apparel" } ] )
컬렉션에 다음 두 개의 인덱스를 만듭니다.
db.orders.createIndex( { item: 1, quantity: 1 } ) db.orders.createIndex( { type: 1, item: 1 } ) db.orders.createIndex( { price: 1 }, { partialFilterExpression: { type: "apparel" } } )
collection에 대해 몇 가지 쿼리를 실행합니다.
db.orders.find( { type: "apparel"} ) db.orders.find( { item: "abc" } ).sort( { quantity: 1 } ) db.orders.find( { price: { $gt: 10 } } )
orders 컬렉션에서의 인덱스 사용에 대한 통계를 보려면 다음 집계 작업을 실행하세요.
db.orders.aggregate( [ { $indexStats: { } } ] )
이 작업은 각 인덱스에 대한 사용 통계가 포함된 문서를 반환합니다.
[ { name: 'type_1_item_1', key: { type: 1, item: 1 }, host: 'examplehost.local:27018', accesses: { ops: Long("1"), since: ISODate("2024-05-02T15:07:21.420Z") }, shard: "shardA", spec: { v: 2, key: { type: 1, item: 1 }, name: 'type_1_item_1' } }, { name: 'item_1_quantity_1', key: { item: 1, quantity: 1 }, host: 'examplehost.local:27018', accesses: { ops: Long("1"), since: ISODate("2024-05-02T15:07:21.254Z") }, shard: "shardA", spec: { v: 2, key: { item: 1, quantity: 1 }, name: 'item_1_quantity_1' } }, { name: '_id_', key: { _id: 1 }, host: 'examplehost.local:27018', accesses: { ops: Long("0"), since: ISODate("2024-05-02T15:07:13.274Z") }, shard: "shardA", spec: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'price_1', key: { price: 1 }, host: 'examplehost.local:27018', accesses: { ops: Long("0"), since: ISODate("2024-05-02T15:07:54.847Z") }, shard: "shardA", spec: { v: 2, key: { price: 1 }, name: 'price_1', partialFilterExpression: { type: 'apparel' } } } ]
MongoDB Node.js 운전자 사용하여 집계 파이프라인 에 $indexStats 단계를 추가하려면 파이프라인 객체 에서 $indexStats 연산자 사용합니다.
다음 예시 컬렉션 의 각 인덱스 에 대한 사용 통계가 포함된 문서 반환하는 파이프라인 단계를 만듭니다. 그런 다음 이 예시 에서는 집계 파이프라인 실행합니다.
const pipeline = [{ $indexStats: {} }]; const cursor = collection.aggregate(pipeline); return cursor;