В файле Mongoose для MongooseJS и MongoDB/Node.js:
Когда приложение запускается, Mongoose автоматически вызывает
ensureIndexдля каждого определенного индекса в вашей схеме. Хотя это хорошо для разработки, рекомендуется, чтобы это поведение было отключено в процессе производства, поскольку создание индекса может привести к значительным результатам. Отключите поведение, установив для параметраautoIndexвашей схемы значение false.
Это, как представляется, дает указание удалить автоматическую индексацию из mongoose до развертывания, чтобы оптимизировать Mongoose от инструктирования Mongo, чтобы пойти и опрокинуть все индексы при запуске приложения, что, по-видимому, имеет смысл.
Каков правильный способ обработки индексирования в производственном коде? Может быть, внешний script должен генерировать индексы? Или, может быть, ensureIndex не нужно, если одно приложение является единственным читателем/писателем для коллекции, потому что оно будет продолжать индексировать каждый раз, когда происходит запись БД?
Изменить: В дополнение, MongoDB предоставляет хорошую документацию для того, как делать индексацию, но не почему и когда должны быть указаны явные директивы индексирования. Мне кажется, что индексы должны постоянно обновляться приложениями-писателями автоматически на коллекциях с существующими индексами и что ensureIndex действительно больше одноразового использования (выполняется при применении нового индекса), и в этом случае Mongoose autoIndex должен быть no-op при обычном перезагрузке сервера.