Ce face dropIndex() / dropIndexes()
dropIndex('status_1_total_-1') șterge indexul cu acel nume; poți da și cheia ({ status: 1, total: -1 }). dropIndexes() fără argumente șterge toate indexurile colecției, mai puțin _id_, care nu poate fi șters.
Ca să afli sigur dacă un index mai e necesar, îl poți ascunde întâi cu hideIndex() (MongoDB 4.4+): rămâne actualizat la scrieri, dar planificatorul nu îl mai folosește. Dacă interogările nu încetinesc, îl ștergi; dacă da, îl readuci instant cu unhideIndex(), fără reconstruire.
Parametri
| Parametru | Descriere |
|---|---|
nume | cheie |
Numele indexului (din getIndexes) sau documentul cheie. |
Ce returnează
Un document cu nIndexesWas (numărul de indexuri dinainte) și ok: 1.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
use magazin
db.comenzi.insertMany([
{ _id: 1, client: 'Ana', oras: 'Iași', total: 120, status: 'livrata', produse: ['caiet', 'pix'] },
{ _id: 2, client: 'Dan', oras: 'Cluj', total: 85, status: 'noua', produse: ['carte'] },
{ _id: 3, client: 'Ioana', oras: 'Iași', total: 240, status: 'livrata', produse: ['rucsac', 'caiet', 'pix'] },
{ _id: 4, client: 'Mihai', oras: 'Brașov', total: 60, status: 'anulata', produse: [] }
])
db.comenzi.createIndex({ status: 1, total: -1 })
db.comenzi.createIndex({ client: 1 })
Exemplul 1: Ascunderea unui index înainte de ștergere
Întâi îl ascundem, ca să vedem dacă lipsa lui se simte.
db.comenzi.hideIndex('client_1')
Ieșire în mongosh
{ hidden_old: false, hidden_new: true, ok: 1 }
Exemplul 2: Ștergerea după nume
Colecția avea trei indexuri (_id_ și cele două create).
db.comenzi.dropIndex('status_1_total_-1')
Ieșire în mongosh
{ nIndexesWas: 3, ok: 1 }
Exemplul 3: Toate indexurile, în afară de _id
După exemplul 2 mai rămăseseră două indexuri; dropIndexes() îl păstrează doar pe _id_.
db.comenzi.dropIndexes()
Ieșire în mongosh
{
nIndexesWas: 2,
msg: 'non-_id indexes dropped for collection',
ok: 1
}
Greșeli frecvente
- Ștergerea unui index folosit de interogări frecvente poate încetini brusc aplicația; ascunde-l întâi cu
hideIndex(). - Pe un server cu replicare, rezultatul conține și câmpurile
$clusterTimeșioperationTime; exemplele de aici sunt de pe un server de sine stătător.
Comenzi înrudite
getIndexes(): Listează indexurile unei colecții, cu câmpurile, numele și opțiunile fiecăruia (unique, expireAfterSeconds etc.).Index compus: Un index compus pe mai multe câmpuri accelerează interogările care filtrează și sortează după aceste câmpuri, în ordinea lor.drop() / dropDatabase(): drop() șterge definitiv o colecție cu documentele și indexurile ei; dropDatabase() șterge toată baza curentă.