getIndexes() în MongoDB & NoSQL

Listează indexurile unei colecții, cu câmpurile, numele și opțiunile fiecăruia (unique, expireAfterSeconds etc.).

Sintaxă
db.colectie.getIndexes()

Ce face getIndexes()

getIndexes() întoarce un tablou cu câte un document pe index: v (versiunea formatului), key (câmpurile și direcțiile), name și opțiunile speciale, ca unique, expireAfterSeconds sau partialFilterExpression. Indexul _id_ există în fiecare colecție și nu poate fi șters.

Numele din name este cel pe care îl dai la dropIndex() sau la hint(). Pentru a vedea cât e folosit fiecare index, rulează db.colectie.aggregate([{ $indexStats: {} }]).

Ce returnează

Un tablou cu descrierea fiecărui index.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

use magazin
db.clienti.insertMany([
  { _id: 1, nume: 'Ana', email: 'ana@exemplu.ro' },
  { _id: 2, nume: 'Dan', email: 'dan@exemplu.ro' },
  { _id: 3, nume: 'Ioana' }
])

Exemplul 1: Indexurile colecției clienti

Pe lângă _id_, colecția are indexul unic pe email creat imediat înainte.

db.clienti.createIndex({ email: 1 }, { unique: true })
db.clienti.getIndexes()

Ieșire în mongosh

magazin> db.clienti.createIndex({ email: 1 }, { unique: true })
email_1
magazin> db.clienti.getIndexes()
[
  { v: 2, key: { _id: 1 }, name: '_id_' },
  { v: 2, key: { email: 1 }, name: 'email_1', unique: true }
]

Exemplul 2: Doar numele indexurilor

Rezultatul este un tablou obișnuit, deci poți folosi map.

db.clienti.getIndexes().map(i => i.name)

Ieșire în mongosh

[ '_id_', 'email_1' ]

Greșeli frecvente

  • Un index care apare în listă nu e neapărat folosit; verifică cu $indexStats sau explain().
  • Indexurile se construiesc pe server; în aplicație nu e nevoie să le creezi la fiecare pornire (dar nici nu strică: createIndex pe un index identic nu face nimic).

Comenzi înrudite

  • dropIndex() / dropIndexes(): dropIndex() șterge un index după nume sau după cheie; dropIndexes() le șterge pe toate, în afară de _id.
  • createIndex() cu unique: true: Un index unic garantează că două documente nu pot avea aceeași valoare într-un câmp, de exemplu același email.
  • Index compus: Un index compus pe mai multe câmpuri accelerează interogările care filtrează și sortează după aceste câmpuri, în ordinea lor.
  • db.stats(): Afișează statistici despre baza curentă: număr de colecții și documente, mărimea datelor, a indexurilor și spațiul pe disc.