I dette tilfælde hjælper indekset ikke, fordi dit matchende resultatsæt består af næsten hele samlingen. Det betyder, at den skal indlæses i RAM og gennemløbe det meste af indekset, samt indlæse i RAM og krydse dokumenterne selv.
Uden indekset ville det bare lave en tabelscanning, inspicere hvert dokument og returnere, hvis det matchede.
I tilfælde som dette, hvor en forespørgsel vil returnere næsten en hel samling, er et indeks muligvis ikke nyttigt.
Tilføjelse af en .limit() vil fremskynde forespørgslen. Du kan også tvinge forespørgselsoptimeringsværktøjet til ikke at bruge indekset med .hint():
db.collection.find().hint({$natural:1})
Du kan også tvinge forespørgslen til at angive resultatværdierne direkte fra selve indekset ved at begrænse de valgte felter til kun dem, du har indekseret. Dette gør det muligt at undgå behovet for at indlæse dokumenter efter at have udført indeksscanningen.
Prøv dette og se om forklaringsoutputtet indikerer "indexOnly":true
db.numbers.find({number: {$gt: 10000}}, {number:1}).explain()
Detaljer her: