MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Criar índice dinamicamente com mongoid


Dizendo Model.index(:field => -1) , mais ou menos, apenas registra a existência do índice com Model , ele não cria um índice. Você está procurando por create_indexes :

Então você gostaria de dizer:
Model.index(field: -1)
Model.create_indexes

Você também pode criá-los diretamente através do Moped chamando create nos indexes da coleção :
Mongoid::Sessions.default[:models].indexes.create(field: -1)
Model.collection.indexes.create(field: 1)
# or in newer versions:
Model.collection.indexes.create_one(field: 1)

Mongoid::Sessions foi renomeado para Mongoid::Clients em versões mais recentes, então você pode precisar dizer:
Mongoid::Clients.default[:models].indexes.create(field: 1)
Model.collection.indexes.create(field: 1)
# or in even newer versions:
Model.collection.indexes.create_one(field: 1)

Obrigado a js_ e mltsy por anotar essas mudanças.