The best indexes for your application must take a number
of factors into account, including the kinds of queries you expect,
the ratio of reads to writes, and the amount of free memory on your
system.

When developing your indexing strategy you should have a deep
understanding of your application’s queries. Before you build indexes,
map out the types of queries you will run so that you can build
indexes that reference those fields. Indexes come with a performance
cost, but are more than worth the cost for frequent queries on large
data set. Consider the relative frequency of each query in the
application and whether the query justifies an index.

The best overall strategy for designing indexes is to profile a
variety of index configurations with data sets similar to the ones
you’ll be running in production to see which configurations perform
best.Inspect the current indexes created for your collections to
ensure they are supporting your current and planned queries. If an
index is no longer used, drop the index.

MongoDB can only use one index to support any given
operation. However, each clause of an $or query may use a
different index.