Die Abfrage im Protokoll stimmt nicht mit der Abfrage überein, die Sie ausführen, der Speicherort ist anders:
[ 116.3426399230957, 39.95959281921387 ]
vs.[ 116.3175773620605, 39.97607231140137 ]
Ich glaube auch nicht, dass Sie Ihre gesamte Protokollzeile reproduziert haben, da sie nur area
erwähnt und nicht deliver_area
.
Allerdings sind sie nicht wirklich langsam . Im ersten Fall dauerte es 103 ms, was in einigen Fällen passieren kann, wenn Ihr Server andere E / A ausführt. Die zweite Abfrage dauerte 5 ms als explain()
Ausgabe sagt es Ihnen.
Am auffälligsten ist aber, dass Ihr Hauptkriterium id: 59
ist . Ich weiß nicht, was Ihre _id
ist Feld ist, aber wenn Sie einen Index auf id
setzen dann sollte dies nicht einmal eine 2dsphere
verwenden müssen überhaupt indexieren — es sei denn, Sie haben natürlich viele Dokumente mit id=59
. In diesem Fall könnten Sie mit einem zusammengesetzten Schlüssel auf { id: 1, deliver_area: '2dsphere' }
besser dran sein .