정의
$indexStatscollection의 각 인덱스 사용에 관한 통계를 반환합니다. 액세스 제어를 함께 실행하는 경우 최소한
clusterMonitor역할이 있는 사용자로 인증합니다.단계는 빈 문서 사용하며 구문은 다음과
$indexStats같습니다.{ $indexStats: { } } 각 인덱스에 대해 반환 문서에는 다음 필드가 포함됩니다.
출력 필드설명name인덱스 이름
인덱스 키 사양입니다.
참조: 사양
mongod프로세스의 호스트 이름 및 포트입니다.다음을 포함하여 연결된 호스팅하다 에 대한 인덱스 사용량 지표 :
ops: 인덱스를 사용한 사용자 작업 수입니다. 여기에는 TTL 인덱스를 통한 삭제나 청크 분할 및 마이그레이션 작업과 같은 내부 작업은 포함되지 않습니다.since: MongoDB가 통계를 수집한 시간입니다.
경고:
accesses필드 쿼리 실행되는 노드 에 대한 인덱스 사용량 지표 만 보고합니다. 보다 포괄적인 인덱스 사용 통계를 보려면 클러스터$indexStats의 각 노드 에서 를 실행 .호스트와 연결된 샤드의 이름입니다.
샤딩된 클러스터에서만 사용할 수 있습니다.
인덱스 키와 인덱스 속성을 포함하는 인덱스에 대한 전체 사양 문서입니다.
인덱스 옵션
hidden(은)는 값이true인 경우에만 포함됩니다.인덱스가 현재 작성 중인지 여부를 나타냅니다.
true인 경우에만 사용할 수 있습니다.
행동
액세스 필드
The statistics reported by the accesses field only apply to the node where the query is being run and only include index access driven by user requests. It does not include internal operations like deletion via TTL indexes or chunk split and migration operations.
제한 사항
$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;