- Reference >
mongo
Shell Methods >- Collection Methods >
- db.collection.createIndex()
db.collection.createIndex()¶
On this page
Definition¶
-
db.collection.
createIndex
(keys, options)¶ Creates indexes on collections.
Parameter Type Description keys
document A document that contains the field and value pairs where the field is the index key and the value describes the type of index for that field. For an ascending index on a field, specify a value of
1
; for descending index, specify a value of-1
.MongoDB supports several different index types including text, geospatial, and hashed indexes. See Index Types for more information.
options
document Optional. A document that contains a set of options that controls the creation of the index. See Options for details.
Options¶
The options
document contains a set of options that controls the
creation of the index. Different index types can have additional
options specific for that type.
Options for All Index Types¶
The following options are available for all index types unless otherwise specified:
Changed in version 3.0: The dropDups
option is no longer available.
Parameter | Type | Description |
---|---|---|
background |
boolean | Optional. Builds the index in the background so that building an index does
not block other database activities. Specify true to build in
the background. The default value is false . |
unique |
boolean | Optional. Creates a unique index so that the collection will not accept
insertion of documents where the index key or keys match an existing
value in the index. Specify The option is unavailable for hashed indexes. |
name |
string | Optional. The name of the index. If unspecified, MongoDB generates an index name by concatenating the names of the indexed fields and the sort order. Whether user specified or MongoDB generated, index names including
their full namespace (i.e. |
sparse |
boolean | Optional. If Changed in version 2.6: 2dsphere indexes are sparse by default and
ignore this option. For a compound index that includes
2d, geoHaystack, and text indexes behave similarly to the 2dsphere indexes. |
expireAfterSeconds |
integer | Optional. Specifies a value, in seconds, as a TTL to control how long MongoDB retains documents in this collection. See Expire Data from Collections by Setting TTL for more information on this functionality. This applies only to TTL indexes. |
v |
index version | Optional. The index version number. The default index version depends on the
version of mongod running when creating the index. Before
version 2.0, the this value was 0; versions 2.0 and later use version
1, which provides a smaller and faster index format. Specify a
different index version only in unusual situations. |
storageEngine |
document | Optional. Allows users to specify configuration to the storage engine on a
per-index basis when creating an index. The value of the
Storage engine configuration specified when creating indexes are validated and logged to the oplog during replication to support replica sets with members that use different storage engines. New in version 3.0. |
Options for text
Indexes¶
The following options are available for text indexes only:
Parameter | Type | Description |
---|---|---|
weights |
document | Optional. For text indexes, a document that contains
field and weight pairs. The weight is an integer ranging from 1 to
99,999 and denotes the significance of the field relative to the
other indexed fields in terms of the score. You can specify weights
for some or all the indexed fields. See
Control Search Results with Weights to adjust the scores.
The default value is 1 . |
default_language |
string | Optional. For text indexes, the language that
determines the list of stop words and the rules for the stemmer and
tokenizer. See Text Search Languages for the available
languages and Specify a Language for Text Index for
more information and examples. The default value is english . |
language_override |
string | Optional. For text indexes, the name of the field, in
the collection’s documents, that contains the override language for
the document. The default value is language . See
Use any Field to Specify the Language for a Document for an example. |
textIndexVersion |
integer | Optional. For text indexes, the In MongoDB 2.6, the default version is New in version 2.6. |
Options for 2dsphere
Indexes¶
The following option is available for 2dsphere indexes only:
Parameter | Type | Description |
---|---|---|
2dsphereIndexVersion |
integer | Optional. For 2dsphere indexes, the In MongoDB 2.6, the default version is New in version 2.6. |
Options for 2d
Indexes¶
The following options are available for 2d indexes only:
Parameter | Type | Description |
---|---|---|
bits |
integer | Optional. For 2d indexes, the number of precision of the stored geohash value of the location data. The |
min |
number | Optional. For 2d indexes, the lower inclusive boundary for
the longitude and latitude values. The default value is -180.0 . |
max |
number | Optional. For 2d indexes, the upper inclusive boundary for
the longitude and latitude values. The default value is 180.0 . |
Options for geoHaystack
Indexes¶
The following option is available for geoHaystack indexes only:
Parameter | Type | Description |
---|---|---|
bucketSize |
number | For geoHaystack indexes, specify the number of units within which to group the location values; i.e. group in the same bucket those location values that are within the specified number of units to each other. The value must be greater than 0. |
Behaviors¶
The createIndex()
method has the behaviors
described here.
To add or change index options you must drop the index using the
dropIndex()
method and issue anothercreateIndex()
operation with the new options.If you create an index with one set of options, and then issue the
createIndex()
method with the same index fields and different options without first dropping the index,createIndex()
will not rebuild the existing index with the new options.If you call multiple
createIndex()
methods with the same index specification at the same time, only the first operation will succeed, all other operations will have no effect.Non-background indexing operations will block all other operations on a database.
MongoDB will not
create an index
on a collection if the index entry for an existing document exceeds theMaximum Index Key Length
. Previous versions of MongoDB would create the index but not index such documents.Changed in version 2.6.
Examples¶
Create an Ascending Index on a Single Field¶
The following example creates an ascending index on the field
orderDate
.
If the keys
document specifies more than one field, then
createIndex()
creates a compound
index.
Create an Index on a Multiple Fields¶
The following example creates a compound index on the
orderDate
field (in ascending order) and the zipcode
field (in descending order.)
A compound index cannot include a hashed index component.
Note
The order of an index is important for supporting
sort()
operations using the index.
Additional Information¶
- Use
db.collection.createIndex()
rather thandb.collection.ensureIndex()
to create indexes. - The Indexes section of this manual for full documentation of indexes and indexing in MongoDB.
db.collection.getIndexes()
to view the specifications of existing indexes for a collection.- Text Indexes for details on creating
text
indexes. - Geospatial Indexes and geoHaystack Indexes for geospatial queries.
- TTL Indexes for expiration of data.