Definição
geoWithinO operador
geoWithindá suporte à query de pontos geograficamente em uma determinada modelagem. Somente os pontos são retornados, mesmo que o valorindexShapessejatruenadefiniçã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
-180e180, ambos inclusos. Os valores de latitude podem estar entre-90e90, 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])
Sintaxe
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> } } }
Opções
geoWithin usa os seguintes termos para construir uma consulta:
Campo | Tipo | Descrição | necessidade |
|---|---|---|---|
| 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 | condicional |
| objeto | Objeto que especifica o ponto central e o raio em metros para o Atlas Search . O objeto contém os seguintes campos GeoJSON :
Para saber como especificar dados GeoJSON em um objeto GeoJSON, consulte Objetos GeoJSON. É necessário | condicional |
| 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 | condicional |
| cadeia de caracteres ou matriz de cadeias de caracteres | Campo ou campos de tipo geo indexado para pesquisa. | sim |
| objeto | Pontuação a ser atribuída aos resultados de pesquisa correspondentes. Por padrão, a pontuação nos resultados é
Para obter informações sobre como utilizar o | no |
Exemplos
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 }
box Exemplo
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
$limitpara limitar a saída a3resultados.Estágio
$projectpara excluir todos os campos, excetonameeaddress.
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.
Exemplo básico
Exemplo de metadados
circle Exemplo
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
$limitpara limitar a saída a3resultados.$projectEstágio para excluir todos os campos, excetonamee,addresse 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.
geometry Exemplos
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.