A consulta no log não corresponde à consulta que você executa, o local é diferente:
[ 116.3426399230957, 39.95959281921387 ] vs.[ 116.3175773620605, 39.97607231140137 ] Eu também não acho que você tenha reproduzido toda a sua linha de log, pois apenas menciona
area e não deliver_area . No entanto, eles não são realmente lentos . No primeiro caso, levou 103ms, o que em alguns casos pode acontecer porque seu servidor está fazendo outro IO. A segunda consulta levou 5ms como
explain() saída lhe diz. Mas o mais impressionante é que seu critério principal é
id: 59 . Não sei qual é o seu _id campo é, mas se você definir um índice em id então isso nem deveria ter que usar um 2dsphere index - a menos que você tenha muitos documentos onde id=59 . Nesse caso, seria melhor usar uma chave composta em { id: 1, deliver_area: '2dsphere' } .