MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Sortowanie wyników MongoDB GeoNear według czegoś innego niż odległość?

Jeśli używasz $near polecenie, to musisz najpierw posortować według odległości, w przeciwnym razie pojęcie "blisko" nie ma żadnego sensu. Na kuli ziemskiej wszystko może być „blisko” danego punktu, to tylko kwestia „jak blisko”.

Masz tutaj dwie opcje:

  1. ogranicz wyniki $near
  2. użyj $within polecenie

Myślę, że to, czego szukasz, to $within polecenie

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

Możesz je następnie posortować według innego klucza:

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

Jednak polecenie inside może dostarczyć zbyt wiele wyników, więc prawdopodobnie chcesz wprowadzić pewną logikę, aby ograniczyć liczbę elementów zwracanych przez $within .

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

Prawda jest taka, że ​​jeśli osiągniesz określony limit, wartość twojego $within polecenie zwykle zaczyna spadać. Twój kod klienta może chcieć sprawdzić, czy osiągasz maksymalne wyniki.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo — ignoruj ​​​​utrwalanie właściwości

  2. Rzutowanie na numer nie powiodło się dla wartości NaN (numer typu) na ścieżce w polu wyliczanym Mongoose

  3. Jak napisać warunek dopasowania dla wartości tablicowych?

  4. Jak napisać wiele grup według pól id w sterowniku Mongodb java?

  5. Jakie korzyści płyną z tego scenariusza?