Хотя я согласен с принятым ответом, стоит отметить, что в соответствии с руководством MongoDB это не рекомендуемый способ добавления индексов на рабочий сервер:
Если ваше приложение включает операции обеспеченияIndex (), а индекс не существует для других операционных проблем, построение индекса может оказать серьезное влияние на производительность базы данных.
Чтобы избежать проблем с производительностью , убедитесь, что ваше приложение проверяет индексы при запуске с использованием метода getIndexes () или эквивалентного метода для вашего драйвера и завершает работу, если соответствующие индексы не существуют. Всегда создавайте индексы в производственных экземплярах с использованием отдельного кода приложения во время определенных окон обслуживания.
blockquote>Конечно, это действительно зависит от того, как ваше приложение структурировано и развернуто. Например, если вы развертываете в Heroku, и вы не используете функцию предварительной загрузки Heroku , скорее всего, ваше приложение не будет вообще выполнять запросы во время запуска, и поэтому, вероятно, безопасно создать индекс в это время.
В дополнение к этому из принятого ответа:
Таким образом, это только влияет на производительность при первом создании индекса и в то время коллекции часто пустые, поэтому создание индекса в любом случае будет быстрым.
blockquote>Если вам удалось впервые получить модель данных и запросы, прибитые в первый раз, это нормально, и часто случай. Однако, если вы добавляете новые функции в свое приложение, с новым запросом БД на свойство без индекса, вы часто обнаруживаете, что добавляете индекс в коллекцию, содержащую многие существующие документы.
Это время, когда вам нужно быть осторожным с добавлением индексов и тщательно учитывать последствия этой работы. Например, вы могли бы создать индекс в фоновом режиме :
db.ensureIndex({ name: 1 }, { background: true });
Проблемная часть, кажется, reloadAllComponents
.
Вы можете попробовать использовать reloadComponent: . Это загрузит только определенный элемент.