Indexes¶
On this page
Specifying Indexes¶
You can define indexes on documents using the index macro. Provide the key for the index along with a direction. Additional options can be supplied in the second options hash parameter:
You can define indexes on embedded document fields as well:
You can index on multiple fields and provide direction:
Indexes can be sparse:
Indexes can be specified to be created in the background in cases where the collection is large and index creation may take a long time:
If the background_indexing
configuration option is true, the indexes are created in the background
unless the background: false
option is provided.
Deprecated: When using MongoDB 2.6, you can drop the duplicate entries
for unique indexes that are defined for a column that might
already have duplicate values by specifying the drop_dups
option:
The drop_dups
option has been removed as of MongoDB 3.0.
For geospatial indexes, make sure the field being indexed is of type Array:
Indexes can be scoped to a specific database:
Mongoid can define indexes on “foreign key” fields for associations. This only works on the association macro that the foreign key is stored on:
Index Management Rake Tasks¶
When you want to create the indexes in the database, use the provided
db:mongoid:create_indexes
Rake task:
Mongoid also provides a Rake task to delete all secondary indexes.
Note: the output of these Rake tasks goes to the default logger configured
by Rails. This is usually a file like log/development.log
and not standard
output.
These create/remove indexes commands also works for just one model by running in Rails console:
Using Rake Tasks With Non-Rails Applications¶
Mongoid’s Rake tasks are automatically loaded in Rails applications using
Mongoid. When using Mongoid with a non-Rails application, these tasks must
be loaded manually. This can be achieved by loading them in the Rakefile and
providing an :environment
task to load your application’s models:
If your application uses Bundler, you can require bundler/setup
instead of
explicitly requiring mongoid
: