Se stai usando $near
comando quindi devi prima ordinare per distanza o il concetto di "vicino" non ha davvero alcun senso. Su un globo tutto può essere "vicino" a un dato punto, è solo una questione di "quanto vicino".
Hai due opzioni qui:
- limita i risultati di
$near
- usa il
$within
comando
Penso che quello che stai cercando sia il $within
comando
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Puoi quindi ordinarli in base a un'altra chiave:
db.places.find(...).sort({created:1})
Tuttavia, il comando inside potrebbe fornire troppi risultati, quindi probabilmente vorrai inserire un po' di logica per limitare il numero di elementi restituiti da $within
.
db.places.find(...).limit(50).sort({created:1})
La verità è che, se raggiungi un limite specifico, il valore del tuo $within
il comando generalmente inizia a cadere. Il tuo codice cliente potrebbe voler verificare se stai raggiungendo il massimo dei risultati.