Ако използвате $near
тогава първо трябва да сортирате по разстояние или понятието "близо" всъщност няма никакъв смисъл. На глобус всичко може да бъде „близо“ до дадена точка, въпросът е само „колко близо“.
Тук имате две възможности:
- ограничете резултатите от
$near
- използвайте
$within
команда
Мисля, че това, което търсите, е $within
команда
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
След това можете да ги сортирате по друг ключ:
db.places.find(...).sort({created:1})
Въпреки това, командата within може да предостави твърде много резултати, така че вероятно искате да поставите някаква логика, за да ограничите броя на елементите, върнати от $within
.
db.places.find(...).limit(50).sort({created:1})
Истината е, че ако достигнете конкретен лимит, стойността на вашия $within
команда обикновено започва да пада. Вашият клиентски код може да поиска да провери дали постигате максималните резултати.