Pokud používáte $near
příkaz pak musíte nejprve seřadit podle vzdálenosti nebo koncept "blízko" nedává žádný smysl. Na zeměkouli může být všechno „blízko“ danému bodu, jde jen o to „jak blízko“.
Zde máte dvě možnosti:
- omezení výsledků
$near
- použijte
$within
příkaz
Myslím, že to, co hledáte, je $within
příkaz
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Poté je můžete seřadit podle jiného klíče:
db.places.find(...).sort({created:1})
Příkaz inside však může poskytnout příliš mnoho výsledků, takže pravděpodobně budete chtít použít nějakou logiku k omezení počtu položek vrácených $within
.
db.places.find(...).limit(50).sort({created:1})
Pravdou je, že pokud dosáhnete určitého limitu, hodnota vašeho $within
příkaz obecně začne padat. Váš klientský kód může chtít zkontrolovat, zda dosahujete maximálních výsledků.