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

Sorterer MongoDB GeoNear-resultater efter noget andet end afstand?

Hvis du bruger $near kommando, så skal du først sortere efter afstand ellers giver begrebet "nær" ikke rigtig nogen mening. På en globus kan alt være "nær" på et givet punkt, det er bare et spørgsmål om "hvor tæt på".

Du har to muligheder her:

  1. begræns resultaterne af $near
  2. brug $within kommando

Jeg tror, ​​at det du leder efter er $within kommando

center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})

Du kan derefter sortere disse efter en anden nøgle:

db.places.find(...).sort({created:1})

Imidlertid kan inside-kommandoen give for mange resultater, så du vil sandsynligvis bruge noget logik for at begrænse antallet af varer, der returneres af $within .

db.places.find(...).limit(50).sort({created:1})

Sandheden er, hvis du rammer en bestemt grænse, værdien af ​​din $within kommando begynder generelt at falde. Din klientkode vil måske tjekke, om du når de maksimale resultater.



  1. ServerSelectionTimeoutError fejl 11001 getaddriinfo mislykkedes python

  2. Indstil standarddatoen i Mongoose-dokumentet til nu + [noget stigning]

  3. Hvordan sorterer man underdokumentarray i mongoose/mongodb?

  4. Laravel og redis scanning