Om du använder $near
kommandot då måste du först sortera efter avstånd, annars är begreppet "nära" inte riktigt meningsfullt. På en jordglob kan allt vara "nära" till en given punkt, det är bara en fråga om "hur nära".
Du har två alternativ här:
- begränsa resultaten för
$near
- använd
$within
kommando
Jag tror att det du letar efter är $within
kommando
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Du kan sedan sortera dessa efter någon annan nyckel:
db.places.find(...).sort({created:1})
Men kommandot inom kan ge för många resultat, så du vill antagligen använda lite logik för att begränsa antalet objekt som returneras av $within
.
db.places.find(...).limit(50).sort({created:1})
Sanningen är att om du når en specifik gräns, värdet på din $within
kommandot börjar generellt falla. Din kundkod kanske vill kontrollera om du når maxresultaten.