$geoWithin (Dentro da Geometria)
Última atualização: 2026-10-09
$geoWithin (Dentro da Geometria)
$geoWithin encontra documentos cuja localização cai dentro de uma geometria fornecida: $box (retângulo), $polygon, $center (círculo planar), $centerSphere (círculo esférico) ou $geometry (GeoJSON). `{ loc: { $geoWithin: { $box: [[0, 0], [10, 10]] } } }`. Pontos de fronteira são incluídos; um índice 2dsphere ou 2d é obrigatório.
| Categoria | Geoespacial |
|---|---|
| Versão do MongoDB | 2.4+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ <campo de localização>: { $geoWithin: { $geometry: <GeoJSON> } } }
⚙️ Parâmetros
| campo de posição | O campo que armazena a localização. |
|---|---|
| geometria | $box, $polygon, $center, $centerSphere ou $geometry. |
Retorno:Cursor dos documentos correspondentes
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $geoWithin: lojas dentro de um retângulo
db.stores.find({
loc: { $geoWithin: { $box: [[-73.98, 40.75], [-73.97, 40.76]] } }
})
// Polígono GeoJSON
db.stores.find({
loc: { $geoWithin: { $geometry: { type: 'Polygon', coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] } } }
})
Saída:
// Retorna lojas cuja localização cai dentro do retângulo ou do polígono
📌 Notas
- Exige um índice 2dsphere (GeoJSON) ou 2d (pares de coordenadas legados)
- Pontos de fronteira são incluídos
- Os resultados não são ordenados por distância; use $near para isso
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é a diferença entre $geoWithin e $near?
A$geoWithin apenas testa contenção e não ordena; $near retorna resultados ordenados por distância.
Q$geoWithin suporta círculos?
ASim, $center desenha um círculo planar e $centerSphere um esférico.
QUm índice é obrigatório para $geoWithin?
ASim, um índice 2dsphere ou 2d é obrigatório.