Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

geoWithin Operador

geoWithin

O operador geoWithin dá suporte à query de pontos geograficamente em uma determinada modelagem. Somente os pontos são retornados, mesmo que o valor indexShapes seja true nadefinição do índice .

Você pode consultar pontos dentro de um:

  • Círculo

  • Caixa delimitadora

  • Polígono

Ao especificar as coordenadas a serem pesquisadas, a longitude deve ser especificada primeiro e depois a latitude. Os valores de longitude podem estar entre -180 e 180, ambos inclusos. Os valores de latitude podem estar entre -90 e 90, ambos inclusos. Os valores de coordenadas podem ser inteiros ou duplos.

Observação

A Pesquisa do MongoDB não é compatível com o seguinte:

  • Sistema de Referência de Coordenadas Não Padrão (CRS)

  • Sistema de coordenadas Planar XY (bidimensional)

  • Pares de coordenadas Notação de ponto (ou seja, pointFieldName: [12, 34] )

geoWithin tem a seguinte sintaxe:

{
"$search": {
"index": <index name>, // optional, defaults to "default"
"geoWithin": {
"path": "<field-to-search>",
"box | circle | geometry": <object>,
"score": <score-options>
}
}
}

geoWithin usa os seguintes termos para construir uma consulta:

Campo
Tipo
Descrição
necessidade

box

objeto

Objeto que especifica os pontos GeoJSON inferior esquerdo e superior direito de uma caixa a ser pesquisada. O objeto utiliza os seguintes campos:

Para saber como especificar dados GeoJSON em um objeto GeoJSON, consulte Objetos GeoJSON.

É necessário box , circle ou geometry .

condicional

circle

objeto

Objeto que especifica o ponto central e o raio em metros para o Atlas Search . O objeto contém os seguintes campos GeoJSON :

  • center - Centro do círculo especificado como um ponto GeoJSON.

  • radius - O raio, que é um número, especificado em metros. O valor deve ser maior ou igual a 0.

Para saber como especificar dados GeoJSON em um objeto GeoJSON, consulte Objetos GeoJSON.

É necessário circle , box ou geometry .

condicional

geometry

Objeto GeoJSON

Objeto GeoJSON que especifica o MultiPolígono ou Polígono para o Atlas Search . O polígono deve ser especificado como um loop fechado onde a última posição é igual à primeira posição.

Ao calcular resultados geoespaciais, os operadores geoShape e geoWithin do MongoDB Search e o operador $geoIntersects do MongoDB utilizam geometrias diferentes. Essa diferença pode ser vista em como o MongoDB Search e o MongoDB desenham as bordas poligonais.

O MongoDB Search desenha polígonos com base na distância cartesiana, que é a linha mais curta entre dois pontos no sistema de referência de coordenadas.

MongoDB desenha polígonos usando o modo geodésico baseado em índices2dsphere construídos sobre uma biblioteca de terceiros para tipos geodésicos, ou o modo plano, de índices2d. Para saber mais, consulte Objetos GeoJSON.

A Pesquisa do MongoDB e o MongoDB podem retornar resultados diferentes para queries geoespaciais envolvendo polígonos.

Para saber como especificar dados GeoJSON em um objeto GeoJSON, consulte Objetos GeoJSON.

É necessário geometry , box ou circle .

condicional

path

cadeia de caracteres ou matriz de cadeias de caracteres

Campo ou campos de tipo geo indexado para pesquisa.

sim

score

objeto

Pontuação a ser atribuída aos resultados de pesquisa correspondentes. Por padrão, a pontuação nos resultados é 1. Você pode modificar a pontuação usando as seguintes opções:

  • boost: multiplique a pontuação do resultado pelo número fornecido.

  • constant: substitui a pontuação do resultado pelo número fornecido.

  • function: substitua a pontuação do resultado pela expressão fornecida.

Para obter informações sobre como utilizar o score em sua consulta, consulte Classificar os documentos nos resultados.

no

Os exemplos seguintes utilizam a coleção listingsAndReviews no banco de dados sample_airbnb . Se você tiver o conjunto de dados de amostra em seu cluster, poderá criar um índice de pesquisa personalizado do MongoDB para o tipo geoespacial e executar as queries de exemplo em seu cluster.

Utilize a seguinte definição de índice de amostra para indexar o campo address.location na collection listingsAndReviews :

1{
2 "mappings": {
3 "fields": {
4 "address": {
5 "fields": {
6 "location": {
7 "type": "geo"
8 }
9 },
10 "type": "document"
11 },
12 "property_type": {
13 "type": "token"
14 }
15 }
16 }
17}

A query seguinte utiliza o operador geoWithin com o campo box para search propriedade dentro de uma caixa delimitadora na Austrália.

A consulta inclui um:

  • Estágio $limit para limitar a saída a 3 resultados.

  • Estágio $project para excluir todos os campos, exceto name e address.

Observação

Você não precisa especificar índices denominados default em sua query do MongoDB Search. Se o seu índice tiver qualquer outro nome, você deverá especificar o campo index.

A query seguinte utiliza o operador geoWithin com o campo circle para search propriedade dentro de um raio de uma milha de coordenadas especificadas no Canadá.

A consulta inclui um:

  • Estágio $limit para limitar a saída a 3 resultados.

  • $project Estágio para excluir todos os campos, exceto name e,address e para exemplos do Compass , a referência de etapas exigida.

Observação

Você não precisa especificar índices denominados default em sua query do MongoDB Search. Se o seu índice tiver qualquer outro nome, você deverá especificar o campo index.

Os exemplos a seguir usam o operador geoWithin com o campo geometry para pesquisar propriedades no Havaí. O campo type especifica se a área é um polígono GeoJSON ou MultiPolygon.

Observação

Você não precisa especificar índices denominados default em sua query do MongoDB Search. Se o seu índice tiver qualquer outro nome, você deverá especificar o campo index.

Voltar

geoShape

Nesta página