MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Créer dynamiquement un index avec mongoid

Dire Model.index(:field => -1) , plus ou moins, enregistre simplement l'existence de l'index avec Model , il ne crée pas réellement d'index. Vous recherchez create_indexes :

Donc, vous voudriez dire :

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

Vous pouvez également les créer directement via Moped en appelant create sur les indexes de la collection :

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 a été renommé Mongoid::Clients dans les versions plus récentes, vous devrez peut-être dire :

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)

Merci à js_ et mltsy pour avoir noté ces changements.