MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Consultar polígonos $ geowithin $ box mongodb não retorna nada


O operador $box para $geoWithin suporta apenas documentos baseados em coordenadas de grade e não suporta GeoJSON formato de formas.

Dependendo da estrutura de seus documentos e de como você os está consultando, isso provavelmente é tratado como coordenadas de grade, ou seja, {geometry: [<long>, <lat>]} Isso pode não ter funcionado para seu documento de polígonos porque Polígonos GeoJSON requerem um wrapper de array extra. ou seja, [[ [<long>, <lat>] ]] invalidando o formato de coordenadas da grade.

Se seus documentos estiverem no formato GeoJSON e você quiser selecionar uma área, poderá utilizar $geometry em vez de.
db.places.find(
   {
     'geometry': {
       $geoWithin: {
          $geometry: {
             type : "Polygon" ,
             coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]
          }
       }
     }
   }
)

Vale a pena notar que MongoDB Compass a visualização geoespacial atualmente (v1.6) ainda não suporta GeoJSON.