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
$withinkommando
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.