Indexes are special data structures that improve query performance. Indexes store a portion of a collection's data in an easy-to-traverse form. The index stores the value of a specific field or set of fields, ordered by the value of the field.
To improve query performance, build indexes on fields that appear often in queries and for all operations that sort by a field.
- Queries on an indexed field can use the index to limit the number of documents that must be scanned to find matching documents.
- Sort operations on an indexed field can return documents pre-sorted by the index.
To learn more about indexes, see Indexes.
Indexes have some negative performance impact on write operations. For collections with high write-to-read ratio, indexes are expensive since each insert must also update any indexes. For a detailed list of considerations for indexes, see Operational Considerations for Indexes.
The Indexes tab lists the existing indexes for a collection.
To access the Indexes tab for a collection, click on the collection on the left hand pane and select the Indexes tab.
For each index, Compass displays the following information:
|Name and Definition||The name of the index and keys.|
|Type||Regular, text, geospatial or hashed index.|
|Size||How large the index is.|
|Usage||Number of times the index has been used since the time the index was created or the last server restart.|
|Properties||Any special properties (such as uniqueness, partial) of the index.|
Create an Index¶
To create an index on a collection via Compass, the collection must contain documents.
Optional. Enter the index name.¶
In the dialog, enter the name of the index to create, or leave blank to have MongoDB create a default name for the index.
Add fields to index.¶
Specify an index key.
- To specify an existing document field as an index key, select the field from the dropdown list.
- To specify a field which does not exist in any document as an index key, enter the field name in the input box.
- To create a compound index, click Add Another Field.
- Use the dropdown to the right of each field name to specify the
index type (
descending, or 2dsphere).
To learn how to specify a wildcard index, see Wildcard Indexes.
Optional. Specify the index options.¶
Compass supports the following index options:
|Build index in the background||Background Construction|
|Create unique index||Ensure that the indexed fields do not store duplicate values.||Unique Indexes|
|Create a TTL index||Delete documents automatically after a specified number of seconds since the indexed field value.||TTL Indexes|
|Partial filter expression|
Index only the documents which match the specified filter expression.
The following partial filter expression only indexes
documents where the
|Use custom collation||Create a custom collation for the index using the options provided in Compass.||Collation Document|
|Wildcard projection (New in MongoDB 4.2)|
Support unknown or arbitrary fields which match the specified
projection in the index. To use a wildcard projection, set
your index field name to
Consider the following wildcard projection document:
If your index field name is
Click Create Index.¶
New in version v4.2.
You can create wildcard indexes to support queries against unknown or arbitrary fields.
Consider a collection where documents contain a
object. The fields within the
userMetadata object may vary
You can create a wildcard index on
userMetadata to account for
all potential fields within the object. In Compass, enter
the following for the index name:
Specify a type (
descending) for your wildcard
index, then click Create Index.
Compass shows the type of your new index as Wildcard.
Drop an Index¶
Confirm the index to delete.¶
In the dialog, enter the name of the index to delete.
Click Drop to drop the index.¶
- Creating and dropping indexes is not permitted in MongoDB Compass Readonly Edition.
- The Indexes tab is not available if you are connected to a Data Lake.