MongoDB - Indexing Limitations


Extra Overhead:

Every index occupies some space as well as causes an overhead on each insert, update and delete. So if you rarely use your collection for read operations, it makes sense not to use indexes.

RAM Usage:

Since indexes are stored in RAM, you should make sure that the total size of the index does not exceed the RAM limit. If the total size increases the RAM size, it will start deleting some indexes and hence causing performance loss.

Query Limitations:

Indexing can't be used in queries which use:

  • Regular expressions or negation operators like $nin, $not, etc.
  • Arithmetic operators like $mod, etc.
  • $where clause

Hence, it is always advisable to check the index usage for your queries.

Index Key Limits:

Starting from version 2.6, MongoDB will not create an index if the value of existing index field exceeds the index key limit.

Inserting Documents exceeding Index Key Limit:

MongoDB will not insert any document into an indexed collection if the indexed field value of this document exceeds the index key limit. Same is the case with mongorestore and mongoimport utilities.

Maximum Ranges:

  • A collection cannot have more than 64 indexes.
  • The length of the index name cannot be longer than 125 characters
  • A compound index can have maximum 31 fields indexed