aggregate에서 $indexStats를 이용

 

// 기본사용법
[direct: mongos] DB_NAME> db.COL_NAME.aggregate([{$indexStats:{}}])
[
  {
    // 인덱스 이름
    name: 'k1_1_k2_1',
    // 인덱스를 이루는 키
    key: { k1: 1, k2: 1 },
    // host
    host: 'HOSTNAME:PORT',
    // 인덱스 사용통계. 여기가 핵심.
    // ops는 인덱스를 사용한 operation 숫자이고,
    // since는 MongoDB가 통계를 모으기 시작한 일시
    accesses: { ops: Long("9211"), since: ISODate("2023-05-18T00:43:00.062Z") },
    // 샤드
    shard: 'SHARD_NAME',
    // 인덱스 스펙
    spec: {
      v: 2,
      key: { k1: 1, k2: 1 },
      name: 'k1_1_k2_1',
      background: true
    }
  },
  {
    name: '_id_',
    key: { _id: 1 },
    host: 'HOSTNAME:PORT',
    accesses: { ops: Long("10321"), since: ISODate("2023-05-18T00:43:00.062Z") },
    shard: 'SHARD_NAME',
    spec: { v: 2, key: { _id: 1 }, name: '_id_' }
  }
]
 
 
 
// 그래서 꼭 필요한 것들만 보고 싶으면 아래처럼 $project 지정
[direct: mongos] DB_NAME> db.COL_NAME.aggregate([
    {$indexStats:{}},
    {$project:{name:1, accesses:1}}
])
[
  {
    name: 'k1_1_k2_1',
    accesses: { ops: Long("9544"), since: ISODate("2023-05-18T00:43:00.062Z") }
  },
  {
    name: '_id_',
    accesses: { ops: Long("10688"), since: ISODate("2023-05-18T00:43:00.062Z") }
  }
]

 

ops 숫자가 작다면 해당 인덱스 사용이 적다는 뜻이고, 해당 인덱스를 없앨지 말지 고민할 필요가 있다는 뜻이 됨.

 

[참고]

https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/

 

 

 

Posted by bloodguy
,