Рекомендуемый способ / место для создания индекса для коллекции MongoDB для веб-приложения - PullRequest
5 голосов
/ 16 октября 2011

Я использую MongoDB для нашего веб-приложения.Предположим, в MongoDB будет функция find () для входящих запросов.Каков рекомендуемый способ / место для добавления индекса в коллекцию MongoDB?

Несколько вариантов, о которых я могу подумать: -

1) «sureIndex» в коллекции при инициализации приложения.[Но как я могу «обеспечить индекс» при самой первой инициализации приложения?поскольку данных не будет на месте]

2 'sureIndex' перед каждой операцией 'find' (по веб-запросу)?но разве это не накладные расходы, даже если 'sureIndex' не будет создавать индекс, если он уже создан?

Есть ли другие варианты?

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 17 октября 2011

Я бы поставил, когда вы инициализируете приложение.Если коллекция не существует, когда вы вызываете sureIndex, индекс (и коллекция) будут созданы в это время.

Я предполагаю, что вы априори знаете, какие типы запросов вы будете выполнять для данных,и какие данные вы будете вносить в индекс, конечно.

0 голосов
/ 22 февраля 2012

Вы можете создать сценарий инициализации для коллекции, которая будет запускаться из командной строки вашего сервера (документы Mongo обсуждают, как писать сценарии Mongo и запускать их из CLI).Тогда он запускается всякий раз, когда начинается mongod?Сценарий может просто вызвать sureIndex () для объекта коллекции.

0 голосов
/ 17 октября 2011

Ясно запустите sureIndex при запуске приложения.Не имеет значения, если вы вызываете sureIndex для пустой коллекции (так как это добавит данные впоследствии в индекс).

Кроме того, это зависит от того, на каком свойстве основаны ваши запросы.Если вы, например, делаете запрос на основе зарегистрированного пользователя, то вы должны добавить индекс по идентификатору пользователя.

...