Encontrei minha resposta nesta pergunta:Ordem de $lt e $gt na consulta de intervalo do MongoDB
O meu índice é um índice multichave (em
tags ) e estou executando uma consulta de intervalo (em post_time ). Aparentemente
, o MongoDB não pode usar ambos os lados do intervalo como filtro neste caso, então ele apenas seleciona o $gte cláusula, que vem primeiro. Como meu limite inferior é o menor post_time valor, o MongoDB começa a escanear todos os objetos. Infelizmente, esta não é toda a história. Tentando resolver o problema, criei índices não multichave também, mas o MongoDB insistiu em usar o ruim. Isso me fez pensar que o problema estava em outro lugar. Por fim, tive que descartar o índice multikey e criar um sem as
tags campo. Tudo está bem agora.