MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB GeoNear-Ergebnisse nach etwas anderem als der Entfernung sortieren?

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:

  1. begrenzen Sie die Ergebnisse von $near
  2. 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.