Definição
geoWithinO operador
geoWithinsuporta fazer uma query de pontos geográficos dentro de uma determinada geometria. Somente pontos são retornados, mesmo que o valorindexShapesestejatruena definiçã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 para pesquisa. 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. When calculating geospatial results, MongoDB Search geoShape and geoWithin operators and MongoDB $geoIntersects operator use different geometries. This difference can be seen in how MongoDB Search and MongoDB draw polygonal edges. 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 draws polygons using the geodesic mode based on 2dsphere indexes that is built on top of a third-party library for geodesic types, or the flat mode, from 2d indexes. To learn more, see GeoJSON Objects. 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
The following examples use the listingsAndReviews collection in the sample_airbnb database. If you have the sample dataset on your cluster, you can create a custom MongoDB Search index for geo type and run the example queries on your 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:
$limitstage to limit the output to3results.$projectstage to exclude all fields exceptnameandaddress.
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:
$limitstage to limit the output to3results.$projectstage to exclude all fields exceptnameandaddress, and for Compass examples, the required steps reference.
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.