Powinieneś uruchomić explain
w odpowiedzi na Twoje zapytanie, pomoże Ci to dowiedzieć się, co się dzieje.
Jest prawdopodobne, że Mongo nie używa indeksu zarówno do filtrowania, jak i sortowania. Gdy używasz $or
, może używać wielu indeksów, aby dopasować opcje. Ale kiedy dodasz sort
może sprawić, że nie będzie używał indeksów dostępnych do filtrowania.
Kiedy chcesz posortować według zapytania, musisz upewnić się, że posortowane pole znajduje się w indeksie, do którego chcesz trafić (ostatni lub nie może go użyć do sortowania).
Możesz też przyspieszyć, przekazując wskazówkę dotyczącą indeksu. Nie wiem, ile dokumentów pasuje do Twojego zapytania, ale jeśli jest to niewielka liczba i upewnisz się, że warunki początkowe trafiają do indeksu, sortuj według _id
można zrobić szybko.