Sudahkah Anda mencoba menggunakan kerangka kerja agregasi?
Pipeline dua tahap mungkin berfungsi:
- sebuah $pertandingan tahap yang menggunakan kueri $geoWithin Anda yang sudah ada.
- a $sort tahap yang diurutkan berdasarkan
relevance: -1
Berikut ini contoh tampilannya:
db.foo.aggregate(
{$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
{$sort: {relevance: -1}}
);
Saya tidak yakin bagaimana kinerjanya. Namun, meskipun buruk dengan MongoDB 2.4, mungkin akan sangat berbeda di 2.6/2.5, karena 2.6 akan menyertakan peningkatan kinerja pengurutan agregasi .