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

Zapytanie o wielokąty $geowithin $box mongodb niczego nie zwraca

$box operator dla $geoWithin obsługuje tylko dokumenty oparte na współrzędnych siatki i nie obsługuje GeoJSON format kształtów.

W zależności od struktury dokumentów i sposobu, w jaki je wysyłasz, jest to prawdopodobnie traktowane jako współrzędne siatki, tj. {geometry: [<long>, <lat>]} To mogło nie zadziałać w przypadku twojego dokumentu wielokątów, ponieważ Wielokąty GeoJSON wymagają dodatkowego opakowania tablicy. np. [[ [<long>, <lat>] ]] unieważnienie formatu współrzędnych siatki.

Jeśli Twoje dokumenty są w formacie GeoJSON i chcesz wybrać obszar, możesz użyć $geometry zamiast.

db.places.find(
   {
     'geometry': {
       $geoWithin: {
          $geometry: {
             type : "Polygon" ,
             coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]
          }
       }
     }
   }
)

Warto zauważyć, że Kompas MongoDB wizualizacja geoprzestrzenna obecnie (v1.6) nie obsługuje jeszcze GeoJSON.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb count liczba odrębnych wartości na pole/klucz

  2. c# mongodb wyszukiwanie z uwzględnieniem wielkości liter

  3. MongoDB, zaktualizuj pole kolekcji, jeśli nowa wartość nie jest pusta

  4. Jak zoptymalizować zapytanie MongoDB za pomocą zarówno $gt, jak i $lte?

  5. jak uwierzytelnić połączenie mongoose mongodb w node.js