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

$geoNear (обобщен канал) не връща правилни документи

Това изобщо не е "същата" заявка. Има явна разлика в използването на отделен $match етап, тъй като "филтрирането" се извършва само "след като" са намерени "най-близките резултати". Това означава, че потенциално връщате „по-малко“ резултати, тъй като критериите не се издават в комбинация.

Ето защо има "заявка" опция в $geoNear :

db.place.aggregate(
[
    { 
        $geoNear: { 
            spherical: true,
            near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
            distanceField: "dist",
            query: {
                "schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" } 
            }
        }
    }
])

Сега това е същото запитване. Или би било абсолютно същото, ако сте използвали $nearSphere . Тъй като $near не отчита кривината на земята при изчисленията на разстоянието. $nearSphere и $geoNear прави.

Но основната точка е комбинирането с "query" опция, тъй като това е единственият начин наистина да вземете предвид и двата критерия при първоначалното търсене.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Различен брой на множество полета, използвайки агрегиране на mongodb

  2. XML към BSON с помощта на C#

  3. Mutex с MongoDB

  4. Необходимо е да се съхраняват десетични стойности с висока точност в MongoDB

  5. Защо получавам грешка 500. Съжаляваме, но нещо се обърка при изпращане на приложението ми към Heroku?