Fundamentalmente, os índices no MongoDB são semelhantes aos índices em outros sistemas de banco de dados. O MongoDB suporta índices em qualquer campo ou subcampo contido em documentos dentro de uma coleção do MongoDB.
Os índices são abordados em detalhes aqui e eu recomendo a leitura desta documentação.
Há seções sobre operações de indexação, estratégias e opções de criação, bem como explicações detalhadas sobre os vários índices, como índices compostos (ou seja, um índice em vários campos).
Uma coisa a notar é que, por padrão, criar um índice é uma operação de bloqueio. Criando um índice é tão simples quanto:
db.collection.ensureIndex( { zip: 1})
Algo assim será retornado, indicando que o índice foi inserido corretamente:
Inserted 1 record(s) in 7ms
Construindo um índice em uma grande coleção de dados, a operação pode levar muito tempo para ser concluída. Para resolver esse problema, a opção em segundo plano pode permitir que você continue usando sua instância mongod durante a compilação do índice.
As limitações na indexação no MongoDB são abordadas aqui .