Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

geopesquisa

Nesta página

  • Comportamento
  • Exemplos
geoSearch

Importante

Removido no MongoDB 5.0

MongoDB 5.0 remove o índice geoHaystack obsoleto e comando geoSearch . Em vez disso, use um 2d index com $geoNear ou um dos geospatial query operators compatíveis.

Atualizar sua instância MongoDB para 5.0 e configurar featureCompatibilityVersion para 5.0 excluirá quaisquer índices geoHaystack preexistentes.

O comando geoSearch fornece uma interface para a funcionalidade de índice do mongoDB . Esses índices são úteis para retornar resultados com base em coordenadas de localização após a coleta de resultados com base em alguma outra query (ou seja, um "palhaço").

O comando geoSearch aceita um documento que contém os seguintes campos.

Campo
Tipo
Descrição
geoSearch
string
A collection a ser consultada.
search
documento
query para filtrar documento.
near
variedade
Coordenadas de um ponto.
maxDistance
número
Opcional. Distância máxima do ponto especificado.
limit
número
Opcional. Número máximo de documentos a retornar.
readConcern
documento

Opcional. Especifica a read concern.

A partir do MongoDB 3.6, a opção readConcern tem a seguinte sintaxe: readConcern: { level: <value> }

Os possíveis níveis de read concern são:

  • "local". Esse é o read concern padrão para operações de leitura em relação ao primário e secundários.

  • "available". Disponível para operações de leitura em relação às primárias e secundárias. "available" se comporta da mesma forma que "local" em relação aos secundários primários e não fragmentados. A query retorna os dados mais recentes da instância.

  • "majority". Disponível para conjuntos de réplica que usam o mecanismo de armazenamento WiredTiger.

  • "linearizable". Disponível apenas para operações de leitura no primary.

Para obter mais informações sobre os read concern, consulte Níveis de read concern.

Para obter mais informações sobre os níveis de referência de leitura, consulte Níveis de referência de leitura.

comment
qualquer

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

A menos que especificado de outra forma, o comando geoSearch limita os resultados a 50 documentos.

geoSearch não é suportado para clusters fragmentados.

geoSearch pode ser usado dentro de transações distribuídas.

Importante

Na maioria dos casos, uma transação distribuída incorre em um custo de desempenho maior do que as gravações de um único documento, e a disponibilidade de transações distribuídas não deve substituir o design eficaz do esquema. Em muitos cenários, o modelo de dados desnormalizado (documentos e arrays incorporados) continuará a ser ideal para seus dados e casos de uso. Ou seja, para muitos cenários, modelar seus dados adequadamente minimizará a necessidade de transações distribuídas.

Para considerações adicionais sobre o uso de transações (como limite de tempo de execução e limite de tamanho do oplog), consulte também Considerações de produção.

Considere o seguinte exemplo:

db.runCommand({
geoSearch : "places",
near: [ -73.9667, 40.78 ],
maxDistance : 6,
search : { type : "restaurant" },
limit : 30
})

O comando acima retorna todos os documento com uma type de restaurant com uma distância máxima de 6 unidades a partir das coordenadas [ -73.9667, 40.78 ] na collection places até um máximo de 30 resultados.

Para substituir o nível de preocupação de leitura padrão do "local", utilize a opção readConcern.

A operação a seguir em um conjunto de réplicas especifica uma read concern de "majority" para ler a cópia mais recente dos dados confirmados como gravados na maioria dos nós.

Observação

Independentemente do nível de read concern, os dados mais recentes em um nó podem não refletir a versão mais recente dos dados no sistema.

db.runCommand(
{
geoSearch: "places",
near: [ -73.9667, 40.78 ],
search : { type : "restaurant" },
readConcern: { level: "majority" }
}
)

Para garantir que um único thread possa ler suas próprias gravações, use "majority" read concern e "majority" write concern em relação ao primário do conjunto de réplicas.

← Comandos Geoespaciais