Zgodnie z dokumentacją Mongoose dla MongooseJSi MongoDB/ Node.js:
Po uruchomieniu aplikacji Mongoose automatycznie wywołuje
ensureIndexkażdy indeks zdefiniowany w schemacie. Chociaż jest to przyjemne dla programowania, zaleca się wyłączenie tego zachowania w środowisku produkcyjnym, ponieważ tworzenie indeksu może mieć znaczący wpływ na wydajność. Wyłącz to zachowanie, ustawiającautoIndexopcję schematu na wartość false.
Wydaje się, że instruuje to usunięcie automatycznego indeksowania z Mongoose przed wdrożeniem, aby zoptymalizować Mongoose od instruowania Mongo, aby przeszedł i przeszedł przez wszystkie indeksy podczas uruchamiania aplikacji, co wydaje się mieć sens.
Jaki jest właściwy sposób obsługi indeksowania w kodzie produkcyjnym? Może zewnętrzny skrypt powinien generować indeksy? A może ensureIndexjest niepotrzebne, jeśli pojedyncza aplikacja jest jedynym czytnikiem / piszącym w kolekcji, ponieważ będzie kontynuować indeksowanie za każdym razem, gdy nastąpi zapis bazy danych?
Edycja: aby uzupełnić, MongoDB zapewnia dobrą dokumentację dotyczącą sposobu indeksowania, ale nie wyjaśnia, dlaczego lub kiedy należy wykonać jawne dyrektywy indeksowania. Wydaje mi się, że indeksy powinny być aktualizowane automatycznie przez aplikacje pisarza w kolekcjach z istniejącymi indeksami, a to ensureIndexjest raczej jednorazowa czynność (wykonywana, gdy stosowany jest nowy indeks), w którym to przypadku indeks Mongoose autoIndexpowinien być no-op przy normalnym restarcie serwera.