Você deve executar
explain
contra sua consulta, ele o ajudará a descobrir o que está acontecendo. É provável que o Mongo não esteja usando um índice para filtragem e classificação. Quando você usa um
$or
, ele pode usar vários índices para corresponder às opções. Mas quando você adiciona um sort
pode fazer com que não use índices disponíveis para filtragem. Quando você deseja classificar em uma consulta, você precisa certificar-se de que o campo classificado esteja no índice que você deseja atingir (por último, ou não pode usá-lo para classificar).
Você também pode acelerá-lo passando uma dica de índice. Não sei quantos documentos sua consulta corresponde, mas se for um número pequeno e você tiver certeza de que as condições iniciais estão atingindo um índice, a classificação em
_id
pode ser feito rapidamente.