Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Consulta de locais dentro de um perímetro em uma superfície plana

Para query dados de localização dentro de uma forma especificada em uma superfície plana, use o operador $geoWithin . Para usar o $geoWithin com dados que aparecem em uma superfície plana, use esta sintaxe:

db.<collection>.find( {
<location field> : {
$geoWithin : {
<shape operator> : <coordinates>
}
}
} )

Substitua estes valores pela sua query:

Campo
Descrição

<collection>

A collection a ser consultada.

<location field>

O campo que contém seus dados de localização. Para query em uma superfície plana, seus dados devem ser armazenados como legacy coordinate pairs.

<shape operator>

A forma da query. Você pode especificar uma das seguintes formas:

O exemplo nesta página utiliza o operador $box . Para ver exemplos de query usando outras formas, consulte as páginas do operador.

<coordinates>

As coordenadas que definem as bordas da forma a serem query. Quando usadas com o operador $box , as coordenadas representam os cantos inferior esquerdo e superior direito de um retângulo.

Quando você especificar coordenadas de longitude e latitude, liste primeiro a longitude e depois a latitude.

  • Os valores de longitude válidos estão entre -180 e 180, ambos inclusos.

  • Os valores de latitude válidos estão entre -90 e 90, ambos inclusos.

$geoWithin não exige um índice geoespacial. No entanto, um índice geoespacial melhora o desempenho da query.

Crie a coleção contacts:

db.contacts.insertMany( [
{
name: "Evander Otylia",
phone: "202-555-0193",
address: [ 55.5, 42.3 ]
},
{
name: "Georgine Lestaw",
phone: "714-555-0107",
address: [ -74, 44.74 ]
}
] )

O campo address contém pares de coordenadas legados.

Utilize $geoWithin para query a collection contacts . A query $geoWithin a seguir usa o operador $box para retornar documentos que aparecem dentro de um retângulo especificado:

db.contacts.find( {
address: {
$geoWithin: {
$box: [ [ 49, 40 ], [ 60, 60 ] ]
}
}
} )

Saída:

[
{
_id: ObjectId("647e4e496cdaf4dc323ec92a"),
name: 'Evander Otylia',
phone: '202-555-0193',
address: [ 55.5, 42.3 ]
}
]

Os valores do operador $box representam os cantos inferior esquerdo e superior direito do retângulo para a query.

A query $geoWithin mostrada anteriormente retorna documentos que estão dentro de um retângulo que tem estes vér acessos:

  • [ 49, 40 ]

  • [ 49, 60 ]

  • [ 60, 60 ]

  • [ 60, 40 ]

Para saber como usar o operador $geoWithin com outras formas, consulte estas páginas:

  • Para fazer query dentro de um polígono, consulte $polygon.

  • Para query dentro de um círculo, consulte $center.