Wenn Sie den $near
verwenden dann müssen Sie zuerst nach Entfernung sortieren, sonst macht das Konzept "Nähe" keinen Sinn. Auf einem Globus kann alles "nah" an einem bestimmten Punkt sein, es ist nur eine Frage des "wie nah".
Hier haben Sie zwei Möglichkeiten:
- begrenzen Sie die Ergebnisse von
$near
- benutze den
$within
Befehl
Ich denke, wonach Sie suchen, ist der $within
Befehl
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Sie können diese dann nach einem anderen Schlüssel sortieren:
db.places.find(...).sort({created:1})
Der within-Befehl kann jedoch zu viele Ergebnisse liefern, daher möchten Sie wahrscheinlich etwas Logik einsetzen, um die Anzahl der von $within
zurückgegebenen Elemente zu begrenzen .
db.places.find(...).limit(50).sort({created:1})
Die Wahrheit ist, wenn Sie ein bestimmtes Limit erreichen, der Wert Ihres $within
Befehl beginnt im Allgemeinen zu fallen. Ihr Client-Code möchte möglicherweise überprüfen, ob Sie die maximalen Ergebnisse erzielen.