MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ordinamento efficiente dei risultati di una query geospaziale mongodb

Hai provato a utilizzare il framework di aggregazione?

Una pipeline a due fasi potrebbe funzionare:

  1. una corrispondenza $ fase che utilizza la tua query $geoWithin esistente.
  2. 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 .