MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Classificando com eficiência os resultados de uma consulta geoespacial mongodb


Você já tentou usar o framework de agregação?

Um pipeline de dois estágios pode funcionar:
  1. um $match estágio que usa sua consulta $geoWithin existente.
  2. um $sort estágio que classifica por relevance: -1

Aqui está um exemplo de como pode ser:
db.foo.aggregate(
    {$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
    {$sort: {relevance: -1}}
);

Não tenho certeza de como ele irá executar. No entanto, mesmo que seja ruim com o MongoDB 2.4, pode ser drasticamente diferente no 2.6/2.5, pois o 2.6 incluirá melhor desempenho de classificação de agregação .