, вероятно, лучше всего делать это в оболочке, сознательно !, потому что вы можете вызвать хаос, если случайно запустите такую команду в неправильный момент и в неправильном экземпляре.
Самое главное: сделать это в автономном режиме на дополнительном ведомом экземпляре , если вы добавляете индекс в существующую БД!Для больших наборов данных создание индекса может занять часы, даже дни!
см. Также:
http://www.mongodb.org/display/DOCS/Indexes
http://www.javabeat.net/articles/print.php?article_id=353
http://www.mongodb.org/display/DOCS/Indexing+as+a+Background+Operation
http://nosql.mypopescu.com/post/1312926692/mongodb-indexes-and-indexing
Если у вас большой набор данных, обязательно прочитайте о 4-квадратном отключении в прошлом году .. !!
http://www.infoq.com/news/2010/10/4square_mongodb_outage
http://blog.foursquare.com/2010/10/05/so-that-was-a-bummer/
http://highscalability.com/blog/2010/10/15/troubles-with-sharding-what-can-we-learn-from-the-foursquare.html
одна из главных причин нежелания включать индексацию в скрипт или файл конфигурации некоторыхСортировка заключается в том, что в MongoDB индексная операция является блокирующей (!) - это означает, что MongoDB остановит выполнение других операций в базе данных до завершения индексации.Просто представьте невинное изменение в коде, требующее нового индекса для повышения производительности - и это изменение небрежно зарегистрировано и развернуто в рабочей среде ... и вдруг ваша рабочая MongoDB подрывает работу вашего сервера приложений, потому что MongoDBвнутренне добавив новый индекс сначала прежде чем делать что-либо еще ... outch!Очевидно, что это произошло с парой людей, поэтому они продолжают напоминать людям на конференциях MongoDB, чтобы они не «программно» требовали индексов.
Новые версии MongoDB позволяют выполнять фоновую индексацию - вы всегда должны делать эточто, например, db.yourcollection.ensureIndex (..., {background: true})
в противном случае случается не так весело:
https://jira.mongodb.org/browse/SERVER-1341
https://jira.mongodb.org/browse/SERVER-3067