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

Índices geoespaciais

Nesta página

  • Casos de uso
  • Começar
  • Detalhes
  • Coleções fragmentadas
  • Queries cobertas
  • queries esféricas
  • Saiba mais

Os índices geoespaciais suportam queries em dados armazenados como objetosGeoJSON do ou pares de coordenadas legadas. Você pode utilizar índices geoespaciais para melhorar o desempenho para queries em dados geoespaciais ou para executar determinadas queries geoespaciais.

O MongoDB fornece dois tipos de índices geoespaciais:

  • Índices de esferas, que suportam queries que interpretam a geometria em uma esfera.

  • Índices 2D, que suportam queries que interpretam a geometria em uma superfície plana.

Para mais informações sobre dados geoespaciais e operações de query, consulte queries geoespaciais.

Se seu aplicativo query com frequência um campo que contém dados geoespaciais, você pode criar um índice geoespacial para melhorar o desempenho dessas queries.

Algumas operações de consulta exigem um índice geoespacial. Se desejar consultar os operadores $near ou $nearSphere ou o estágio de agregação $geoNear, você deverá criar um índice geoespacial. Para detalhes, consulte Operadores de Consulta Geoespacial e Estágio de Agregação Geoespacial.

Por exemplo, considere uma coleção subway com documentos contendo um campo location , que especifica as coordenadas de estações de metrô em uma cidade. Você geralmente executa queries com o operador $geoWithin para retornar uma lista de estações em uma área específica. Para melhorar o desempenho desta query, você pode criar um índice geoespacial no campo location. Depois de criar o índice, você pode fazer uma query usando o operador $near para retornar uma lista de estações próximas, classificadas da mais próxima para a mais distante.

A indexação de campos comumente consultados aumenta as chances de cobrir essas queries. As queries cobertas são queries que podem ser totalmente satisfeitas usando um índice, sem examinar nenhum documento. Isso otimiza o desempenho da query.

Para criar um índice geoespacial e executar queries geoespaciais, consulte:

Esta seção descreve detalhes sobre índices geoespaciais.

Não é possível usar um índice geoespacial como uma chave de shard ao fragmentar uma coleção. No entanto, você pode criar um índice geoespacial em uma coleção fragmentada utilizando um campo diferente como a chave fragmentada.

Você pode utilizar operadores de consulta e estágios de agregação geoespaciais para consultar dados geoespaciais em coleções fragmentadas.

Antes do MongoDB 4.0, as queries $near e $nearSphere não eram compatíveis com coleções fragmentadas. Em vez disso, você pode utilizar a etapa de agregação $geoNear ou o comando geoNear.

Os índices geoespaciais não podem cobrir uma query.

Usar um índice 2d para queries sobre dados esféricos pode retornar resultados incorretos ou um erro. Por exemplo, índices 2d não suportam queries esféricas que envolvam em torno dos pólos.

No entanto, você pode utilizar o índice 2dsphere para queries esféricas e queries bidimensionais. Para queries bidimensionais, o índice 2dsphere converte dados armazenados como pares de coordenadas legadas para o tipo Ponto GeoJSON.

Para operações de consulta geoespacial de amostra, consulte Exemplos de Consulta Geoespacial.

← Restrições de índice curinga