Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / / /

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

Nesta página

  • Sobre esta tarefa
  • Antes de começar
  • Procedimento
  • Saiba mais

Para executar query de dados de localização dentro de uma forma especificada em uma superfície plana, utilize o operador $geoWithin . Para usar $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.

← Consulta de locais próximos a um ponto em uma superfície plana