sql >> Base de Datos >  >> NoSQL >> MongoDB

Clasificación eficiente de los resultados de una consulta geoespacial mongodb

¿Has probado a usar el marco de agregación?

Una canalización de dos etapas podría funcionar:

  1. una coincidencia de $ etapa que usa su consulta $geoWithin existente.
  2. una clasificación de $ etapa que ordena por relevance: -1

Este es un ejemplo de cómo podría verse:

db.foo.aggregate(
    {$match: { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }},
    {$sort: {relevance: -1}}
);

No estoy seguro de cómo funcionará. Sin embargo, incluso si es pobre con MongoDB 2.4, podría ser dramáticamente diferente en 2.6/2.5, ya que 2.6 incluirá rendimiento mejorado de clasificación por agregación .