Czy próbowałeś użyć struktury agregacji?
Może działać dwuetapowy potok:
- $match etap, który używa Twojego istniejącego zapytania $geoWithin.
- sortowanie $ etap sortujący według
relevance: -1
Oto przykład tego, jak może wyglądać:
db.foo.aggregate(
{$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
{$sort: {relevance: -1}}
);
Nie jestem pewien, jak to będzie działać. Jednak nawet jeśli jest słaba z MongoDB 2.4, może być dramatycznie inna w 2.6/2.5, ponieważ 2.6 będzie zawierać poprawiona wydajność sortowania agregacyjnego .