Definición
$polygonEspecifica un polígono para un Geoespacial
$geoWithinConsulta sobre pares de coordenadas heredados. La consulta devuelve pares que se encuentran dentro de los límites del polígono. El operador no consulta objetos GeoJSON.Para definir el polígono, especifique una matriz de puntos de coordenadas:
{ <location field>: { $geoWithin: { $polygon: [ [ <x1> , <y1> ], [ <x2> , <y2> ], [ <x3> , <y3> ], ... ] } } } El último punto siempre está implícitamente conectado al primero. Puedes especificar tantos puntos (es decir, lados) como desees.
Importante
Si utiliza longitud y latitud, especifique primero la longitud.
Comportamiento
El $polygon El operador calcula distancias utilizando geometría plana.
Las aplicaciones pueden usar $polygon sin un índice geoespacial. Sin embargo, los índices geoespaciales admiten consultas mucho más rápidas que sus equivalentes sin indexar.
Sólo el índice geoespacial 2d admite el $polygon operador.
Ejemplo
La siguiente query devuelve todos los documentos que tienen coordenadas dentro del polígono definido por [ 0 , 0 ], [ 3 , 6 ] y [ 6 , 0 ]:
db.places.find( { loc: { $geoWithin: { $polygon: [ [ 0 , 0 ], [ 3 , 6 ], [ 6 , 0 ] ] } } } )