Динамически создать индекс с 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_ за то, что отметили это изменение.

Другие вопросы по тегам