MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Abfragepolygone $geowithin $box mongodb gibt nichts zurück

Der $box-Operator für $geoWithin unterstützt nur Dokumente, die auf Gitterkoordinaten und unterstützt GeoJSON nicht Formen-Format.

Abhängig von der Struktur Ihres Dokuments und wie Sie es abfragen, wird dies wahrscheinlich als Gitterkoordinaten behandelt, d. h. {geometry: [<long>, <lat>]} Dies hat für Ihr Polygondokument möglicherweise nicht funktioniert, weil GeoJSON-Polygone erfordern einen zusätzlichen Array-Wrapper. also [[ [<long>, <lat>] ]] Ungültigmachen des Gitterkoordinatenformats.

Wenn Ihre Dokumente im GeoJSON-Format vorliegen und Sie einen Bereich auswählen möchten, können Sie $Geometrie stattdessen.

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

Erwähnenswert ist, dass MongoDB Compass Geodaten-Visualisierung derzeit (v1.6) unterstützt GeoJSON noch nicht.