Secondo la documentazione Mongoose per MongooseJS
e MongoDB
/ Node.js
:
All'avvio dell'applicazione, Mongoose chiama automaticamente
ensureIndex
ogni indice definito nello schema. Sebbene sia utile per lo sviluppo, si consiglia di disabilitare questo comportamento in produzione poiché la creazione dell'indice può causare un impatto significativo sulle prestazioni. Disabilita il comportamento impostando l'autoIndex
opzione del tuo schema su false.
Questo sembra istruire la rimozione dell'indicizzazione automatica da mongoose prima della distribuzione per ottimizzare Mongoose dall'istruzione di Mongo di andare a sfornare tutti gli indici all'avvio dell'applicazione, il che sembra avere senso.
Qual è il modo corretto per gestire l'indicizzazione nel codice di produzione? Forse uno script esterno dovrebbe generare indici? O forse ensureIndex
non è necessario se una singola applicazione è l'unico lettore / scrittore di una raccolta perché continuerà un indice ogni volta che si verifica una scrittura su DB?
Modifica: per integrare, MongoDB fornisce una buona documentazione su come eseguire l'indicizzazione, ma non perché o quando dovrebbero essere eseguite le direttive di indicizzazione esplicite. Mi sembra che gli indici debbano essere aggiornati automaticamente dalle applicazioni di scrittura sulle raccolte con indici esistenti e che ensureIndex
è davvero più di una cosa una tantum (eseguita quando viene applicato un nuovo indice), nel qual caso Mongoose autoIndex
dovrebbe essere un no-op in un normale riavvio del server.