Nesse caso, o índice não ajuda porque seu conjunto de resultados correspondente consiste em quase toda a coleção. Isso significa que ele precisa carregar na RAM e percorrer a maior parte do índice, além de carregar na RAM e percorrer os próprios documentos.
Sem o índice, ele faria apenas uma varredura de tabela, inspecionando cada documento e retornando se houver correspondência.
Em casos como esse em que uma consulta retornará quase uma coleção inteira, um índice pode não ser útil.
Adicionar um .limit() irá acelerar a consulta. Você também pode forçar o otimizador de consulta a não usar o índice com .hint():
db.collection.find().hint({$natural:1})
Você também pode forçar a consulta a fornecer os valores de resultado diretamente do próprio índice, limitando os campos selecionados apenas aos que você indexou. Isso permite evitar a necessidade de carregar quaisquer documentos após fazer a varredura de índice.
Tente isso e veja se a saída de explicação indica
"indexOnly":true
db.numbers.find({number: {$gt: 10000}}, {number:1}).explain()
Detalhes aqui:
http://www.mongodb.org /display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-CoveredIndexes