Опитвали ли сте да използвате рамката за агрегиране?
Двустепенен конвейер може да работи:
- съвпадение $ етап, който използва вашата съществуваща заявка $geoWithin.
- $sort етап, който сортира по
relevance: -1
Ето пример как може да изглежда:
db.foo.aggregate(
{$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
{$sort: {relevance: -1}}
);
Не съм сигурен как ще се представи. Въпреки това, дори и да е лошо с MongoDB 2.4, може да е драстично различно в 2.6/2.5, тъй като 2.6 ще включва подобрена ефективност на сортиране на агрегация .