Динамически создать индекс с Mongoid
У меня есть задание, которое создает новые поля в моем документе, и я хочу в конце этого задания создать индексы для этих полей. Я старался
Model.index("field"=>-1)
а также
Mongoid::Sessions.default[:rating_prediction].ensureIndex
Безуспешно
Это возможно?
1 ответ
Решение
Поговорка Model.index(:field => -1)
более или менее просто регистрирует существование индекса с Model
, это на самом деле не создает индекс. Ты ищешь create_indexes
:
- (true) create_indexes
Отправить фактические комментарии создания индекса в драйвер MongoDB
Итак, вы хотели бы сказать:
Model.index(:field => -1)
Model.create_indexes
Вы также можете создать их напрямую через Мопед, позвонив create
на коллекции indexes
:
Mongoid::Sessions.default[:models].indexes.create(:field => 1)
Model.collection.indexes.create(:field => 1)
Mongoid::Sessions
был переименован в Mongoid::Clients
в более новых версиях, так что вам может понадобиться сказать:
Mongoid::Clients.default[:models].indexes.create(:field => 1)
Model.collection.indexes.create(:field => 1)
Спасибо js_ за то, что отметили это изменение.