Heb je geprobeerd het aggregatieraamwerk te gebruiken?
Een pijplijn met twee fasen zou kunnen werken:
- een $match stage die uw bestaande $geoWithin-query gebruikt.
- een $sort fase die sorteert op
relevance: -1
Hier is een voorbeeld van hoe het eruit zou kunnen zien:
db.foo.aggregate(
{$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
{$sort: {relevance: -1}}
);
Ik weet niet zeker hoe het zal presteren. Maar zelfs als het slecht is met MongoDB 2.4, kan het dramatisch anders zijn in 2.6/2.5, aangezien 2.6 verbeterde sorteerprestaties bij aggregatie .