Ако използвате $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 команда обикновено започва да пада. Вашият клиентски код може да поиска да провери дали постигате максималните резултати.