Hai provato a utilizzare il framework di aggregazione?
Una pipeline a due fasi potrebbe funzionare:
- una corrispondenza $ fase che utilizza la tua query $geoWithin esistente.
- un $ordinamento fase che ordina per
relevance: -1
Ecco un esempio di come potrebbe essere:
db.foo.aggregate(
{$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
{$sort: {relevance: -1}}
);
Non sono sicuro di come funzionerà. Tuttavia, anche se è scadente con MongoDB 2.4, potrebbe essere notevolmente diverso in 2.6/2.5, poiché 2.6 includerà miglioramento delle prestazioni di ordinamento delle aggregazioni .