MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Сортиране на резултатите от MongoDB GeoNear по нещо различно от разстояние?

Ако използвате $near тогава първо трябва да сортирате по разстояние или понятието "близо" всъщност няма никакъв смисъл. На глобус всичко може да бъде „близо“ до дадена точка, въпросът е само „колко близо“.

Тук имате две възможности:

  1. ограничете резултатите от $near
  2. използвайте $within команда

Мисля, че това, което търсите, е $within команда

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

След това можете да ги сортирате по друг ключ:

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

Въпреки това, командата within може да предостави твърде много резултати, така че вероятно искате да поставите някаква логика, за да ограничите броя на елементите, върнати от $within .

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

Истината е, че ако достигнете конкретен лимит, стойността на вашия $within команда обикновено започва да пада. Вашият клиентски код може да поиска да провери дали постигате максималните резултати.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb не може да намери обект с твърде дълъг _id

  2. Mongoose запитване по дата

  3. Извършване на заявки към MongoDB от браузър с помощта на бекенд на колба

  4. MongoDB - пример за ръчни препратки

  5. Групирайте записи по месеци и ги пребройте - Mongoose, nodeJs, mongoDb