Definición
$polygonEspecifica un polígono para un Geoespacial
$geoWithinquery on legacy coordinate pairs. La query devuelve parejas que están dentro de los límites del polígono. El operador no realiza una query para objetos GeoJSON.Para definir el polígono, especifica un arreglo 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 tener un índice geoespacial. Sin embargo, los índices geoespaciales permiten consultas mucho más rápidas que sus equivalentes no indexados.
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 ] ] } } } )