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

$geoNear (potok zagregowany) nie zwraca poprawnych dokumentów

To wcale nie jest „to samo” zapytanie. Istnieje wyraźna różnica w używaniu oddzielnego $match etap, ponieważ „filtrowanie” odbywa się dopiero „po” znalezieniu „najbliższych wyników”. Oznacza to, że potencjalnie zwracasz „mniej” wyników, ponieważ kryteria nie są wystawiane razem.

Dlatego istnieje "zapytanie" opcja w $geoNear :

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

Teraz to samo zapytanie. Albo byłoby dokładnie tak samo, gdybyś użył $nearSphere . Ponieważ $near nie uwzględnia krzywizny ziemi w obliczeniach odległości. $nearSphere i $geoNear tak.

Ale głównym punktem jest łączenie z "zapytanie" opcja, ponieważ jest to jedyny sposób, w jaki naprawdę oba kryteria są brane pod uwagę w początkowym wyszukiwaniu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $arrayElemAt . MongoDB

  2. Jak ograniczyć zasoby procesora i pamięci RAM dla mongodump?

  3. Nie można poprawnie zainstalować mongodb na Ubuntu 18.04 LTS

  4. Zwracanie pustej tablicy postów przy użyciu mangusty zapełnij

  5. MongoDb Spring znajduje się w zagnieżdżonym obiekcie