Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Consultas e índices

O relacionamento entre queries de pesquisa e índices de pesquisa determina com que eficiência e eficácia você pode encontrar dados em suas coleções do MongoDB usando o MongoDB Search.

MongoDB Search queries specify the criteria for finding documents within a database. MongoDB Search queries take the form of an aggregation pipeline that begins with the $search or $searchMeta pipeline stage. You can use operators, collectors, and search options inside the pipeline stages to implement complex search functionality like full-text search, relevance-based ranking, faceted search, filtering, and sorting.

Antes de executar uma query do MongoDB Search, você deve criar um índice do MongoDB Search nos campos que deseja pesquisar. Os índices de pesquisa são estruturas de dados otimizadas para recuperar rapidamente documentos que atendam aos critérios de pesquisa da sua query. Ao definir um índice de pesquisa, você especifica quais campos indexar e como esses campos devem ser tokenizados.

Queries de pesquisa eficazes dependem de índices de pesquisa bem definidos. Os campos que você pretende pesquisar devem ser indexados, e a configuração do índice determina se sua pesquisa oferece suporte a ordenação, facetas, preenchimento automático e outras funcionalidades de pesquisa. Você pode iterar tanto no design da query quanto no design do índice para equilibrar a precisão da pesquisa com o desempenho.

Esta página descreve como planejar sua experiência de pesquisa no MongoDB Search e definir um índice e uma query para atender aos seus requisitos de pesquisa.

Ao planejar sua implementação do MongoDB Search, comece definindo a experiência de pesquisa que você deseja oferecer:

  • Identifique claramente quais tipos de pesquisa seu aplicativo precisa realizar. Você está desenvolvendo um recurso de pesquisa para um blog que necessita de pesquisa de texto completo e autocompletar para títulos de artigos, ou um site de e-commerce que requer pesquisa facetada e filtro por categorias de produtos?

  • Determine como os usuários interagirão com seu aplicação. Priorize recursos que melhorarão a experiência do usuário, como tempos de resposta rápidos ou sugestões precisas de preenchimento automático.

Em seguida, considere as seguintes perguntas para ajudar a determinar a estrutura de seus índices e queries do MongoDB Search com base nessas necessidades do usuário:

Escolha entre retornar o conteúdo do documento ou os metadados de pesquisa.

Considere se os usuários do aplicação desejam retornar o conteúdo dos documentos ou metadados sobre seus documentos:

  • Se os usuários quiserem o conteúdo do documento, use a fase de agregação $search para retornar documentos que atendam aos critérios de pesquisa.

  • Se os usuários quiserem metadados sobre os resultados das pesquisas, use a fase $searchMeta para retornar contagens personalizáveis de documentos e facetas correspondentes.

Determine quais campos devem ser indexados com base em quais campos contêm os dados que seus usuários desejam encontrar.

Identifique os campos específicos dentro de suas coleções que os usuários provavelmente pesquisarão para que você saiba quais campos indexar. Cada query do MongoDB Search pesquisa um único índice do MongoDB Search, que contém termos extraídos de um ou mais campos especificados em uma collection. Ao planejar suas queries do MongoDB Search, decida se indexar apenas os campos de chave ou todos os campo da collection especificada, ativando o mapeamento estático ou dinâmico. Você pode executar query em vários campos especificando o caminho da query como uma array de campos ou usando o operador queryString.

Escolha operadores de pesquisa com base no fato de os termos de pesquisa comuns dos seus usuários serem correspondências exatas, semelhantes ou parciais para seus dados.

Os termos de pesquisa comuns dos usuários podem ser correspondências exatas, semelhantes ou parciais para os dados no cluster. Por exemplo, os usuários de um aplicação de análise de filmes podem querer filtrar filmes de um ano exato ou ver recomendações de filmes semelhantes ao seu filme favorito.

Determine o tipo de correspondências que seus usuários estão procurando para informar quais operadores usar em suas queries do MongoDB Search:

  • Para correspondências exatas, use operadores como equals ou in para encontrar documentos que contenham termos idênticos ao valor query especificado. Você também pode usar o operador text para corresponder a documentos que contêm any ou all das strings no valor query.

  • Para correspondências semelhantes, use operadores como near, moreLikeThis ou phrase para encontrar documentos que contenham valores numéricos, documentos ou ordenações de strings que sejam semelhantes aos termos de pesquisa especificados. Você também pode usar o operador range para encontrar documentos que contenham um valor dentro de um intervalo especificado de valores.

  • Para correspondências parciais, como queries de pesquisa conforme o tipo, use operadores como autocomplete, regex ou wildcard para implementar a funcionalidade de pesquisa conforme o tipo ou faça a correspondência de termos usando expressões regulares.

  • Use o operador composto para combinar múltiplos comportamentos de correspondência em uma única query.

Use ferramentas de análise de texto caso seu aplicativo necessite de normalização de texto, suporte a vários idiomas ou mais.

Para aplicativos que exigem normalização de texto, suporte a vários idiomas, derivação ou mais, aproveite a análise de texto do MongoDB Search FERRAMENTAS:

  • Escolha um analisador integrado na definição do seu índice para corresponder ao idioma e à natureza dos seus dados de texto. Os analisadores dividem o texto em termos ou tokens e podem ajustá-lo para remover pontuação e letras maiúsculas, converter palavras para sua forma raiz e muito mais.

  • Configure analisadores personalizados se seu aplicação tiver requisitos específicos, como lidar com termos específicos do domínio ou analisar texto formatado, como endereços de e-mail ou IDs separados por traços. Analisadores personalizados permitem filtrar texto por caractere, definir o número de caracteres a serem incluídos em cada bloco de token ou ativar derivação ou supressão.

  • Defina sinônimos para melhorar a precisão da pesquisa de termos com significados iguais ou semelhantes.

Use as opções de pesquisa para implementar solicitações de filtragem, classificação ou relevância para seus resultados de pesquisa.

Você pode ajustar a apresentação dos resultados da pesquisa com base nas demandas de filtro, ordenação ou relevância dos seus usuários:

  • Use a opção de query de pontuação para modificar a pontuação de relevância dos documentos e afetar a ordem em que os usuários visualizam os resultados. As queries do MongoDB Search associam uma pontuação baseada em relevância a cada documento no conjunto de resultados e retorna documentos em ordem da pontuação mais alta para a mais baixa.

  • Defina a opção de query sort para campos indexados que os usuários provavelmente ordenarão em ordem crescente ou decrescente, como datas ou campos numéricos.

  • Use as opções de query searchBefore ou searchAfter para exibir os resultados como um conjunto de páginas pelas quais os usuários podem navegar sequencialmente ou avançar.

  • Use o coletor facet (MongoDB Search Operator) para permitir que os usuários filtrem resultados por categorias ou outras dimensões. Isso pode melhorar significativamente a relevância dos resultados da pesquisa, oferecendo aos usuários uma experiência de pesquisa mais guiada.

Ajuste a configuração do índice e da query para otimizar o desempenho da sua pesquisa.

O desempenho da query do MongoDB Search é afetado pela configuração do índice e pela complexidade das suas queries. Concentre-se na indexação de campos que são críticos para a funcionalidade de pesquisa do seu aplicativo e busque um equilíbrio lógico entre complexidade e velocidade da query.

Para otimizar ainda mais o desempenho, considere as seguintes opções de query:

  • Use a opção de query concorrente para definir o número de solicitações de pesquisa concorrentes que são executadas ao avaliar uma query. Essa opção é útil para queries complexas ou grandes conjuntos de dados.

  • Use a opção de query returnStoredSource em conjunto com a opção de índice storedSource para determinar se os documentos de origem originais, armazenados como parte do índice, devem ser retornados junto com os resultados da pesquisa. Essa opção é útil para aplicativos onde você exibe resumos ou destaques com base nos critérios de pesquisa.

  • Use a opção de índice numPartitions para particionar seu índice, distribuindo objetos de índice entre subíndices de maneira ideal.

Para obter mais recomendações sobre como otimizar o desempenho da query, consulte Desempenho da query do MongoDB Search.

Before you can search your data using MongoDB Search, you must create one or more MongoDB Search indexes to be used during your MongoDB Search query. This section demonstrates how to apply your query preferences to the JSON configuration syntax of a MongoDB Search index.

To use the JSON syntax in this section in your index definition, replace the placeholders with valid values and ensure that your full index definition contains the necessary options.

Para saber como adicionar seu índice do MongoDB Search ao seu cluster, consulte o Início Rápido do MongoDB Search.

1

Se você souber quais campos deseja consultar na sua coleção, ative mapeamentos estáticos e especifique os campos na definição do índice do MongoDB Search. Caso contrário, você pode ativar mapeamentos dinâmicos para indexar automaticamente todos os campos com base em um conjunto padrão ou configurado de tipos de campo (typeSet).

Para aprender mais, veja Mapeamentos dinâmicos e estáticos.

Observação

Para obter mais detalhes sobre o comportamento e as limitações do índice de pesquisa do MongoDB Search, consulte Considerações para índices de pesquisa do MongoDB Search.

1{
2 "mappings": {
3 "dynamic": true
4 }
5}
2

Se você tiver requisitos especiais de linguagem, análise ou pontuação para os dados do string, aplique as seguintes opções à definição do índice:

Para especificar como o MongoDB Search fragmenta seus campos de texto em tokens, você pode definir analisadores integrados em seu índice do MongoDB Search.

1{
2 "analyzer": "<index-analyzer-name>", // top-level index analyzer, used if no analyzer is set in the field mappings
3 "searchAnalyzer": "<search-analyzer-name>", // query text analyzer, typically the same as the index analyzer
4 "mappings": {
5 "dynamic": <boolean>,
6 "fields":{
7 "<field-name>": [
8 {
9 "type": "string|autocomplete",
10 "analyzer": "<field-analyzer-name>" // field-specific index analyzer
11 "multi": {
12 "<multi-option-name>": {
13 "type": "string|autocomplete",
14 "analyzer": "<alternate-analyzer-name>" // multi-option specific index analyzer
15 }
16 }
17 }
18 ]
19 }
20 }
21}
3

Se quiser otimizar o desempenho da query em um grande conjunto de dados, você pode adicionar as seguintes opções à sua definição de índice para limitar a quantidade de dados que sua query do MongoDB Search deve atravessar:

Use a opção numPartitions para configurar partições para seu índice. Quando você particiona seu índice, o MongoDB Search distribui automaticamente os objetos de índice entre subíndices de maneira ideal.

1{
2 "numPartitions": <integer>,
3}

After you create an MongoDB Search index for all the fields that you want to search in your collection, you can run a MongoDB Search query. This section demonstrates how to apply your goals for your application's search experience to the JSON syntax of a MongoDB Search query.

To use the JSON syntax in this section in your MongoDB Search query aggregation pipeline, replace the placeholders with valid values and ensure that your full query pipeline contains the required $search fields or $searchMeta fields.

Para saber como executar uma query de pesquisa, consulte o Início rápido da pesquisa do MongoDB.

1

O primeiro estágio do pipeline de agregação de query do MongoDB Search deve ser o estágio $search ou $searchMeta, dependendo se você está procurando documentos ou metadados:

Estágio do pipeline de agregação
Propósito

Retornar resultados da pesquisa de texto completo.

Retornar metadados sobre seus resultados de pesquisa.

2

Para definir seus critérios de pesquisa, você deve aplicar um ou mais operadores ou coletores ao seu $search ou $searchMeta fase do pipeline.

Os operadores do MongoDB Search permitem localizar e recuperar dados relevantes do seu cluster de acordo com conteúdo, formato ou tipo de dados. Para saber quais operadores aceitam pesquisas para cada tipo de campo, consulte a tabela na seção de referência de operadores. Você deve especificar um ou mais campos de pesquisa de índice no parâmetro caminho de query do operador:

1{
2 $search: {
3 "<operator-name>"|"<collector-name>": {
4 <operator-specification>|<collector-specification>
5 }
6 }
7}

Dica

Você pode combinar múltiplos operadores em uma única operação usando o operador composto. Você também pode usar a cláusula de filtro do operador composto para filtrar a saída da query que corresponda a uma determinada cláusula.

3

Se quiser recuperar metadados de sua consulta do MongoDB Search, você pode aplicar uma das seguintes configurações para escolher entre a contagem ou facet (MongoDB Search Operator) tipo de documento de resultados de metadados:

Para retornar a contagem total ou com limite inferior dos resultados da pesquisa, defina a opção de contagem no estágio de agregação.

O estágio $searchMeta retorna os resultados de metadados count, enquanto o estágio $search armazena os resultados de metadados na variável de agregação $$SEARCH_META e retorna somente os resultados da pesquisa. Para ver um exemplo de como recuperar os resultados de metadados count da variável $$SEARCH_META, consulte Contagem de resultados.

1{
2 "$search" | "$searchMeta": {
3 "<operator-name>": {
4 <operator-specifications>
5 },
6 "count": {
7 "type": "lowerBound" | "total",
8 "threshold": <number-of-documents> // Optional
9 }
10 }
11}
4

Você pode recuperar informações adicionais sobre os resultados da fase $search usando as seguintes opções:

Opção
Caso de uso

Exiba seus termos de pesquisa em seu contexto original como campos no resultado da consulta.

Recupere um detalhamento detalhado da pontuação para cada documento que a Pesquisa MongoDB retorna.

Recupere análises sobre quais queries do Lucene foram executadas MongoDB Search para satisfazer sua query e quanto tempo sua query gasta nos vários estágios de execução.

5

Você pode implementar uma funcionalidade especial de ordenação para seus resultados de $search com as seguintes opções:

Opção
Caso de uso

Modifique a pontuação de relevância dos documentos nos resultados para garantir que o MongoDB Search retorne resultados relevantes.

Classifique seus resultados por número, string e campos de data ou por pontuação.

Defina um ponto de referência para parar ou iniciar seus resultados ordenados

6

Otimize o desempenho da query usando as seguintes opções de $search:

Opção
Caso de uso

Execute sua query do MongoDB Search com mais eficiência apenas recuperando campos armazenados em mongot conforme especificado em sua definição de índice do MongoDB Search para uma coleção.

Paralelize a procura entre segmentos em nós de pesquisa dedicados.

Para saber como criar e executar um índice do MongoDB Search e uma query do MongoDB Search, consulte o Início rápido do MongoDB Search.

Para saber mais sobre as opções de configuração de query do MongoDB Search mencionadas neste tutorial, consulte as seguintes páginas de referência:

Para saber mais sobre as opções de configuração de índice do MongoDB Search mencionadas neste tutorial, consulte as seguintes páginas de referência:

Avalie esta página