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á vinculado implícitamente al primero. Puedes especificar tantos puntos, es decir, lados, como desees.
Importante
Si usa longitud y latitud, debe especificar primero la longitud.
Comportamiento
La $polygon el operador calcula las distancias utilizando geometría plana (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.
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 ] ] } } } )