Měli byste spustit explain
na základě vašeho dotazu vám pomůže zjistit, co se děje.
Je pravděpodobné, že Mongo nepoužívá index pro filtrování i řazení. Když použijete $or
, může použít více indexů, aby odpovídaly možnostem. Ale když přidáte sort
může to způsobit, že nebude používat indexy dostupné pro filtrování.
Když chcete seřadit podle dotazu, musíte se ujistit, že seřazené pole je v indexu, do kterého chcete zasáhnout (poslední, nebo jej nelze použít k řazení).
Můžete to také urychlit předáním indexové nápovědy. Nevím, kolik dokumentů odpovídá vašemu dotazu, ale pokud je to malý počet a ujistíte se, že počáteční podmínky narážejí na index, řazení podle _id
lze provést rychle.