Zkusili jste použít agregační rámec?
Dvoustupňové potrubí může fungovat:
- a $match fázi, která používá váš stávající dotaz $geoWithin.
- a $sort fáze, která třídí podle
relevance: -1
Zde je příklad, jak by to mohlo vypadat:
db.foo.aggregate(
{$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
{$sort: {relevance: -1}}
);
Nejsem si jistý, jak to bude fungovat. Nicméně, i když je to špatné s MongoDB 2.4, může to být dramaticky odlišné ve 2.6/2.5, protože 2.6 bude obsahovat vylepšený výkon řazení agregací .