Mongo Indexes you should be known
Tags: database, mongodb, indexes
Published: 2023-09-12 02:28:11

When working with MongoDB, understanding and properly utilizing indexes is essential for optimizing query performance. MongoDB provides various types of indexes to support different query patterns and requirements. Here are some important types of indexes you should be aware of:

## 1/ Single Field Indexes

These are the most basic indexes and are created on a single field. They are effective for queries that filter documents based on one field. For example:

```
db.collection.createIndex({ field_name: 1 });

```
The 1 indicates an ascending index; you can use -1 for descending.

## 2/ Compound Indexes

These indexes involve multiple fields and are used when queries filter on multiple fields simultaneously. A compound index can improve query performance for compound queries:

```
db.collection.createIndex({ field1: 1, field2: -1 });

```
In this example, both field1 and field2 are included in the index.

## 3/ Text Indexes

Text indexes are used for full-text search. They enable efficient text-based searches on string fields:

```
db.collection.createIndex({ text_field: "text" });

```

## 4/ Geospatial Indexes

Geospatial indexes support queries involving geographic data, such as location-based queries:

```
db.collection.createIndex({ location_field: "2dsphere" });

```
The 2dsphere index is used for storing GeoJSON data.

## 5/ Hashed Indexes

Hashed indexes are useful for sharding and for distributing data uniformly across shards. They are created by hashing a field’s value:

```
db.collection.createIndex({ hashed_field: "hashed" });

```

## 6/ Unique Indexes

Unique indexes enforce uniqueness constraints on a field. You cannot insert two documents with the same indexed field value:

```
db.collection.createIndex({ unique_field: 1 }, { unique: true });

```

## 7/ Partial Indexes

Partial indexes are used to index a subset of documents in a collection based on a specified filter condition. They can be valuable for optimizing queries with specific criteria:

```
db.collection.createIndex(   { indexed_field: 1 },   { partialFilterExpression: { status: "active" } } );

```

## 8/ Wildcard Indexes

Introduced in MongoDB 5.0, wildcard indexes allow indexing all fields in a document without specifying them explicitly:

```
db.collection.createIndex({ "$**": "text" });

```
This can be useful for queries that involve dynamic or unknown fields.

## 9/ Collation Indexes

Collation indexes support case-insensitive and accent-insensitive string searches. They enable locale-specific sorting and comparison:

```
db.collection.createIndex({ text_field: 1 }, { collation: { locale: "en", strength: 2 } });
```

## 10/ Time-To-Live (TTL) Indexes

TTL indexes automatically remove documents from a collection after a specified time interval. They are used for data expiration:

```
db.collection.createIndex({ expire_at: 1 }, { expireAfterSeconds: 3600 });

```

These are some of the most commonly used index types in MongoDB. Choosing the right index type and defining indexes based on your application’s query patterns is crucial for achieving optimal query performance and efficient data retrieval. Properly designed and maintained indexes can significantly speed up your MongoDB queries.