Definição
$polygonEspecifica um polígono para uma query geoespacial
$geoWithinem pares de coordenadas legadas. A query retorna pares que estão dentro dos limites do polígono. O operador não executa queries para objetos GeoJSON.Para definir o polígono, especifique uma array de pontos de coordenadas:
{ <location field>: { $geoWithin: { $polygon: [ [ <x1> , <y1> ], [ <x2> , <y2> ], [ <x3> , <y3> ], ... ] } } } O último ponto está sempre implicitamente ligado ao primeiro. Você pode especificar quantos pontos, ou seja, lados, desejar.
Importante
Se você utilizar longitude e latitude, especifique longitude primeiro.
Comportamento
The $polygon operator calculates distances using flat (planar) geometry.
Applications can use $polygon without having a geospatial index. However, geospatial indexes support much faster queries than the unindexed equivalents.
Somente o índice geoespacial 2d suporta o $polygon operador.
Exemplo
A seguinte query retorna todos os documentos que têm coordenadas que existem dentro do polígono definido por [ 0 , 0 ], [ 3 , 6 ] e [ 6 , 0 ]:
db.places.find( { loc: { $geoWithin: { $polygon: [ [ 0 , 0 ], [ 3 , 6 ], [ 6 , 0 ] ] } } } )