Se você estiver usando o
$near
comando então você tem que primeiro classificar por distância ou o conceito de "próximo" não faz nenhum sentido. Em um globo tudo pode estar "próximo" de um determinado ponto, é apenas uma questão de "quão perto". Você tem duas opções aqui:
- limitar os resultados de
$near
- use o
$within
comando
Acho que o que você está procurando é o
$within
comando center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Você pode então classificá-los por alguma outra chave:
db.places.find(...).sort({created:1})
No entanto, o comando within pode fornecer muitos resultados, então você provavelmente deseja colocar alguma lógica para limitar o número de itens retornados por
$within
. db.places.find(...).limit(50).sort({created:1})
A verdade é que, se você atingir um limite específico, o valor do seu
$within
comando geralmente começa a cair. Seu código de cliente pode querer verificar se você está atingindo os resultados máximos.