sql >> Database >  >> NoSQL >> MongoDB

MongoDB GeoNear-resultaten sorteren op iets anders dan afstand?

Als u de $near . gebruikt commando dan moet je eerst sorteren op afstand of het concept "nabij" slaat echt nergens op. Op een wereldbol kan alles "dichtbij" zijn tot een bepaald punt, het is alleen een kwestie van "hoe dichtbij".

Je hebt hier twee opties:

  1. beperk de resultaten van $near
  2. gebruik de $within commando

Ik denk dat je zoekt naar de $within commando

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

U kunt deze dan sorteren op een andere sleutel:

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

Het inside-commando kan echter te veel resultaten opleveren, dus u wilt waarschijnlijk wat logica gebruiken om het aantal items te beperken dat wordt geretourneerd door $within .

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

De waarheid is dat als je een specifieke limiet bereikt, de waarde van je $within commando begint over het algemeen te dalen. Uw klantcode wil misschien controleren of u de maximale resultaten haalt.



  1. Update array-element op id met mongo-query

  2. Een klant vertellen waar de nieuwe Redis-master Sentinel gebruikt?

  3. multi sum/count op mongodb (som geslacht en totaal alle resultaten)

  4. Maak convertToCapped ongedaan naar een verzameling