sql >> Base de Datos >  >> NoSQL >> MongoDB

Consultar polígonos $geowithin $box mongodb no devuelve nada

El operador $box para $geoWithin solo admite documentos basados ​​en coordenadas de cuadrícula y no admite GeoJSON formato de formas.

Dependiendo de la estructura de sus documentos y de cómo los esté consultando, esto probablemente se trate como coordenadas de cuadrícula, es decir, {geometry: [<long>, <lat>]} Es posible que esto no haya funcionado para su documento de polígonos porque Polígonos GeoJSON requiere un contenedor de matriz adicional. es decir, [[ [<long>, <lat>] ]] invalidando el formato de coordenadas de cuadrícula.

Si sus documentos están en formato GeoJSON y desea seleccionar un área, puede utilizar $geometría en cambio.

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

Vale la pena señalar que MongoDB Compass Actualmente, la visualización geoespacial (v1.6) aún no es compatible con GeoJSON.