MongoDB provides a number of different index types. You can create indexes on any field or embedded field within a document or sub-document. You can create single field indexes or compound indexes. MongoDB also supports indexes of arrays, called multi-key indexes, as well as indexes on geospatial data. For a list of the supported index types, see Index Type Documentation.
In general, you should create indexes that support your common and user-facing queries. Having these indexes will ensure that MongoDB scans the smallest possible number of documents.
Behavior of Indexes¶
All indexes in MongoDB are B-tree indexes, which can efficiently support equality matches and range queries. The index stores items internally in order sorted by the value of the index field. The ordering of index entries supports efficient range-based operations and allows MongoDB to return sorted results using the order of documents in the index.
Ordering of Indexes¶
MongoDB indexes may be ascending, (i.e. 1) or descending (i.e. -1) in their ordering. Nevertheless, MongoDB may also traverse the index in either directions. As a result, for single-field indexes, ascending and descending indexes are interchangeable. This is not the case for compound indexes: in compound indexes, the direction of the sort order can have a greater impact on the results.
See Sort Order for more information on the impact of index order on results in compound indexes.
MongoDB can use the intersection of indexes to fulfill queries with compound conditions. See Index Intersection for details.
Index Type Documentation¶
- Single Field Indexes
- A single field index only includes data from a single field of the documents in a collection. MongoDB supports single field indexes on fields at the top level of a document and on fields in sub-documents.
- Compound Indexes
- A compound index includes more than one field of the documents in a collection.
- Multikey Indexes
- A multikey index references an array and records a match if a query includes any value in the array.
- Geospatial Indexes and Queries
- Geospatial indexes support location-based searches on data that is stored as either GeoJSON objects or legacy coordinate pairs.
- Text Indexes
- Text indexes supports search of string content in documents.
- Hashed Index
- Hashed indexes maintain entries with hashes of the values of the indexed field.