sql >> Base de Datos >  >> NoSQL >> MongoDB

Crear índice dinámicamente con mongoid

Diciendo Model.index(:field => -1) , más o menos, solo registra la existencia del índice con Model , en realidad no crea un índice. Estás buscando create_indexes :

Así que querrás decir:

Model.index(field: -1)
Model.create_indexes

También puede crearlos directamente a través de Moped llamando a create en los indexes de la colección :

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 ha sido renombrado a Mongoid::Clients en versiones más nuevas, por lo que es posible que deba decir:

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)

Gracias a js_ y mltsy por tomar nota de estos cambios.