geoSearchImportante
Removido no MongoDB 5.0
O MongoDB remove o 5.0 índicegeoHaystack obsoleto
geoSearche o comando. Em vez disso, use um 2índice d com ou$geoNearum dos operadores de query geoespacial compatíveis.Atualizar sua instância MongoDB para 5.0 e configurar featureCompatibilityVersion para
5.0excluirá quaisquer índices geoHaystack preexistentes.O comando fornece uma interface para
geoSearcha MongoDB 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
geoSearchaceita um documento que contém os seguintes campos.CampoTipoDescriçãogeoSearchstring
A collection a ser consultada.
searchdocumento
query para filtrar documento.
neararray
Coordenadas de um ponto.
maxDistancenúmero
Opcional. Distância máxima do ponto especificado.
limitnúmero
Opcional. Número máximo de documentos a retornar.
readConcerndocumento
Opcional. Especifica a read concern.
A opção
readConcerntem 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 noprimary.
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.
commentany
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:
mensagens de log do mongod, no campo
attr.command.cursor.comment.Saída do perfil do banco de dados, no campo
command.comment.Saída de
currentOp, no campocommand.comment.
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Este comando não é suportado em instâncias sem servidor. Para obter mais informações, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Comportamento
Limite
A menos que especificado de outra forma, o comando geoSearch limita os resultados a 50 documentos.
Clusters fragmentados
geoSearch não é suportado para clusters fragmentados.
Transações
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.
Exemplos
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.
Substituir o Padrão Atenção com a Leitura
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.