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' }
.