MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Effizientes Sortieren der Ergebnisse einer mongodb-Geodatenabfrage

Haben Sie versucht, das Aggregation Framework zu verwenden?

Eine zweistufige Pipeline könnte funktionieren:

  1. ein $match Phase, die Ihre vorhandene $geoWithin-Abfrage verwendet.
  2. ein $sort Stufe, die nach relevance: -1 sortiert

Hier ist ein Beispiel dafür, wie es aussehen könnte:

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

Ich bin mir nicht sicher, wie es funktionieren wird. Aber selbst wenn es mit MongoDB 2.4 schlecht ist, könnte es in 2.6/2.5 dramatisch anders sein, da 2.6 Verbesserte Aggregationssortierleistung .