MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Crea dinamicamente l'indice con mongoid

Dicendo Model.index(:field => -1) , più o meno, registra semplicemente l'esistenza dell'indice con Model , in realtà non crea un indice. Stai cercando create_indexes :

Quindi vorresti dire:

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

Puoi anche crearli direttamente tramite Moped chiamando create sugli indexes della collezione :

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 è stato rinominato in Mongoid::Clients nelle versioni più recenti, quindi potresti dover 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)

Grazie a js_ e mltsy per aver notato questi cambiamenti.