Hvis du bruger $near
kommando, så skal du først sortere efter afstand ellers giver begrebet "nær" ikke rigtig nogen mening. På en globus kan alt være "nær" på et givet punkt, det er bare et spørgsmål om "hvor tæt på".
Du har to muligheder her:
- begræns resultaterne af
$near
- brug
$within
kommando
Jeg tror, at det du leder efter er $within
kommando
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Du kan derefter sortere disse efter en anden nøgle:
db.places.find(...).sort({created:1})
Imidlertid kan inside-kommandoen give for mange resultater, så du vil sandsynligvis bruge noget logik for at begrænse antallet af varer, der returneres af $within
.
db.places.find(...).limit(50).sort({created:1})
Sandheden er, hvis du rammer en bestemt grænse, værdien af din $within
kommando begynder generelt at falde. Din klientkode vil måske tjekke, om du når de maksimale resultater.