In this chapter, we will learn about Indexing Limitations and their other components.
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 reading 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, causing performance loss.
Query Limitations
Indexing can’t be used in queries that 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 used for your queries.
Index Key Limits
Starting from version 2.6, MongoDB will not create an index if the value of the 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. The 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.