Zapytanie w dzienniku nie jest zgodne z zapytaniem, które uruchomiłeś, lokalizacja jest inna:
[ 116.3426399230957, 39.95959281921387 ] vs.[ 116.3175773620605, 39.97607231140137 ]
Nie sądzę też, że odtworzyłeś całą linię dziennika, ponieważ po prostu wspomina o area a nie deliver_area .
Jednak nie są naprawdę wolne . W pierwszym przypadku zajęło to 103 ms, co w niektórych przypadkach może się zdarzyć, gdy serwer wykonuje inne operacje IO. Drugie zapytanie zajęło 5 ms jako explain() wyjście mówi ci.
Ale najbardziej uderzające jest to, że głównym kryterium jest id: 59 . Nie wiem, jaki jest Twój _id pole jest, ale jeśli ustawisz indeks na id wtedy nie powinno to nawet wymagać użycia 2dsphere indeks w ogóle — chyba że masz wiele dokumentów, w których id=59 . W takim przypadku lepiej byłoby użyć klucza złożonego na { id: 1, deliver_area: '2dsphere' } .