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
$indexStatssauexplain(). - Indexurile se construiesc pe server; în aplicație nu e nevoie să le creezi la fiecare pornire (dar nici nu strică:
createIndexpe 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.