Referência de query
Nesta página
Estágios de pipeline
As queries do Atlas Search assumem a forma de um agregação pipeline stage. O Atlas Search oferece $search
e $searchMeta
estágios, ambos devem ser o primeiro estágio em qualquer pipeline de consulta, incluindo os sub-pipelines $lookup
e $unionWith
. Esses estágios podem ser usados em conjunto com outros estágios de pipeline de agregação em sua pipeline da query.
Com base no estágio do pipeline que você escolher, sua consulta retornará os resultados de uma pesquisa de texto completo ou metadados sobre os resultados da pesquisa:
Estágio do pipeline de agregação | Propósito |
---|---|
Retornar resultados da pesquisa de texto completo. | |
Retornar metadados sobre seus resultados de pesquisa. |
operadores e coletores
A Atlas Search também fornece query e collectors que você pode usar dentro dos $search
$searchMeta
estágios de pipeline de agregação . Os operadores de Atlas Search permitem a você localizar e recuperar dados relevantes da coleção no seu agrupamento do Atlas . O coletor retorna um documento representando os resultados dos metadados de pesquisa.
Você pode usar os operadores da Atlas Search para fazer query em termos, frases, formas e pontos geográficos, valores numéricos, documentos semelhantes, termos sinônimos e muito mais.
Você também pode pesquisar utilizando expressões regex e asteriscos. O operador composto do Atlas Search permite que você combine vários operadores dentro do seu $search
estágio para realizar uma pesquisa complexa e filtrar dados com base no que deve, não deve ou deve estar presente nos documentos retornados pelo Atlas Search. Você pode usar o operador composto para também corresponder ou filtrar documentos no próprio estágio $search
. Executar $match
após $search
tem menos desempenho do que executar $search
com o operador composto.
Para saber mais sobre operadores e coletores, consulte Operadores e coletores.
Processamento de Query
mongod
emongot
no mesmo nóQuando você executa uma query, o Atlas Search utiliza a preferência de leitura configurada para identificar o nó no qual executar a query. A query primeiro vai para o processo do MongoDB, que é
mongod
para um cluster de conjunto de réplicas oumongos
para um cluster fragmentado.Para um cluster de conjunto de réplicas, o processo do MongoDB roteia a query para
mongot
no mesmo nó. Para clusters fragmentados, os dados do cluster são particionados em instânciasmongod
e cadamongot
sabe dos dados apenas nomongod
do mesmo nó. Portanto, você não pode executar queries do Atlas Search que tenham como alvo um fragmento específico.mongos
direciona as queries para todos os fragmentos, fazendo essas queries de coleta de dispersão. Se você usar zonas para distribuir uma coleção fragmentada em um subconjunto dos fragmentos no cluster, o Atlas Search roteará a query para a zona que contém os fragmentos da coleção na qual você está fazendo query e executará suas queries$search
somente nos fragmentos em que a coleção está localizada.O Atlas Search realiza a pesquisa e a pontuação e retorna os IDs dos documentos e outros metadados da pesquisa dos resultados correspondentes para
mongod
. Omongod
então realiza uma pesquisa completa do documento implicitamente para os resultados correspondentes e retorna os resultados ao cliente. Se você utilizar a opção$search
concorrente na sua query, o Atlas Search ativará o paralelismo intraquery. Para saber mais, consulte Paralelizar a execução de query entre segmentos.mongod
emongot
em diferentes nósQuando você executa uma consulta, a consulta primeiro vai para o
mongod
com base na preferência de leitura configurada. O processomongod
encaminha a query de pesquisa por meio de um balanceador de carga no mesmo nó, que distribui as solicitações entre todos os processosmongot
.O Atlas Search
mongot
executa a pesquisa e pontuação e retorna os IDs dos documentos e metadados dos resultados correspondentes paramongod
. Em seguida, omongod
executa uma pesquisa completa de documentos para os resultados correspondentes e retorna os resultados para o cliente. Se você usar a opção$search
concorrente em sua query, o Atlas Search ativará o paralelismo intraquery. Para saber mais, consulte Paralelizar a execução de query entre segmentos.
Pontuação
O Atlas Search associa uma pontuação baseada em relevância a cada documento no conjunto de resultados. A pontuação baseada em relevância permite que Atlas Search devolva documentos na ordem da pontuação mais alta para a mais baixa. Atlas Search pontua os documentos mais alto se o query aparecer com frequência em um documento e mais baixo se o query aparecer em muitos documentos da collection. O Atlas Search também oferece suporte à personalização da pontuação padrão baseada em relevância por meio de aumento, decadência ou outras opções de modificação. Para saber mais sobre como personalizar as pontuações resultantes, consulte Classificar os documentos nos resultados.
Veja também: Aprenda Assistindo
Assista a este vídeo para ter uma visão geral de pesquisa e rastreamento de suas queries com o Atlas Search. Neste vídeo, você pode aprender mais sobre operadores do Atlas Search e como os documentos de o Atlas Search pontua documentos nos resultados.
Duração: 15 Minutos
Clientes aceitos
Você pode criar e executar queries do Atlas Search utilizando os seguintes clientes:
Queries para solucionar problemas
Conjunto de resultados vazio
mongot
não retorna erros, mas retorna um conjunto de resultados vazio se sua query $search
:
Referencia um índice que não existe. Se você não especificar um índice por nome na query, o Atlas Search padronizará para um índice denominado
default
. Se você não tiver um índice chamadodefault
ou se o índice que você especificou não existir, o Atlas Search não retornará um erro e retornará um conjunto de resultados vazio. Você pode especificar um índice válido por seu nome utilizando a opçãoindex
.Especifica um campo não indexado. Se você executar uma query em um campo que não está indexado, o Atlas Search não retornará um erro e retornará um conjunto de resultados vazio. Você deve especificar somente campos indexados como valores para o parâmetro
path
. Você pode habilitar o mapeamento dinâmico em sua definição de índice para a collection para garantir que todos os campos dinamicamente indexáveis na collection sejam indexados automaticamente. Para saber mais, consulte mapeamento dinâmico.Usa o operador
text
em um caminho do campo que não é indexado como um tipostring
. Se um campo for indexado como um tipo de campo do Atlas Search diferente destring
, comostringFacet
ouautocomplete
, o Atlas Search não retornará um erro e retornará um conjunto de resultados vazio. Você deve indexar o campo com valores de tipo de dadosBSONstring
como tipo de string para query o campo usando o operador de texto .
PlanExecutor
Erro
mongot
retorna um erro PlanExecutor
se sua query $search
:
Especifica um campo indexado como um tipo de dados incorreto. Nesse caso, se você executar uma query, o Atlas Search retornará uma mensagem de erro identificando o campo que foi indexado incorretamente e seu tipo de dados correto. Por exemplo:
PlanExecutor error during aggregation :: caused by :: Cannot facet on field "genres" because it was not indexed as a "stringFacet" field. Por exemplo, para executar queries de facets nos campos
string
,number
oudate
, crie um índice para os campos utilizando o tipo de campo correspondente do Atlas Search comostringFacet
,number
edate
respectivamente . Para saber mais, consulte Tipos de dados com e sem suporte.