MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Trier efficacement les résultats d'une requête géospatiale mongodb

Avez-vous essayé d'utiliser le framework d'agrégation ?

Un pipeline en deux étapes pourrait fonctionner :

  1. un $match étape qui utilise votre requête $geoWithin existante.
  2. un $sort étape qui trie par relevance: -1

Voici un exemple de ce à quoi cela pourrait ressembler :

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

Je ne sais pas comment cela fonctionnera. Cependant, même s'il est médiocre avec MongoDB 2.4, il pourrait être radicalement différent dans 2.6/2.5, car 2.6 inclura amélioration des performances de tri par agrégation .