Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Menu Docs

ReferĂȘncia de query

As queries do MongoDB Search assumem a forma de um estågio de pipeline de agregação. O MongoDB Search oferece os estågios $search e $searchMeta, ambos devem ser o primeiro estågio em qualquer pipeline de query, incluindo os subpipelines $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.

A MongoDB 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 pesquisa do MongoDB permitem localizar e recuperar dados relevantes da coleção em seu cluster. O coletor retorna um documento representando os resultados dos metadados de pesquisa.

VocĂȘ pode usar os operadores do MongoDB 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 MongoDB Search permite que vocĂȘ combine vĂĄrios operadores dentro do seu estĂĄgio $search para realizar uma pesquisa complexa e filtrar dados com base no que deve, nĂŁo deve ou deve estar presente nos documentos retornados pelo MongoDB 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.

mongod e mongot no mesmo nĂł

Quando vocĂȘ executa uma query, o MongoDB Search usa 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 ou mongos 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 mongod instĂąncias e cada mongot sabe sobre os dados no mongod no mesmo nĂł apenas. Portanto, vocĂȘ nĂŁo pode executar queries no MongoDB Search que tenham como alvo um shard especĂ­fico. mongos direciona as queries para todos os fragmentos, fazendo estas dispersar e reunir queries. Se vocĂȘ usar zonas para distribuir uma coleção fragmentada em um subconjunto de fragmentos no cluster, o MongoDB Search rotearĂĄ a consulta para a zona que contĂ©m os fragmentos da coleção que vocĂȘ estĂĄ consultando e executarĂĄ suas $search queries apenas nos fragmentos onde a coleção estĂĄ localizada.

O MongoDB Search executa a pesquisa e a pontuação e retorna os IDs dos documento e outros metadados da pesquisa dos resultados correspondentes para mongod. O mongod então realiza uma pesquisa completa do documento implicitamente para os resultados correspondentes e retorna os resultados ao cliente.

mongod e mongot em diferentes nĂłs

Quando vocĂȘ executa uma query, a query primeiro vai para com mongod base na preferĂȘncia de leitura. Por padrĂŁo, o processo mongod encaminha a query de pesquisa por meio de um balanceador de carga no mesmo nĂł, que distribui as solicitaçÔes entre todos os processos mongot. Como alternativa, se vocĂȘ definir o parĂąmetro searchNodePreference para o estĂĄgio $search, o MongoDB pesquisa executarĂĄ sua query no mesmo nĂł de pesquisa todas as vezes.

O processo mongot do MongoDB Search executa a pesquisa e a pontuação e retorna os IDs dos documento e os metadados dos resultados correspondentes para mongod. O mongod entĂŁo realiza uma pesquisa completa do documento para os resultados correspondentes e retorna os resultados ao cliente. Se vocĂȘ usar a opção $search concurrent em sua query, o MongoDB Search ativarĂĄ o paralelismo intraquery. Para saber mais, consulte Parallelize Query Execution Across Segments.

O MongoDB 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 MongoDB Search devolva documentos na ordem da pontuação mais alta para a mais baixa. O MongoDB Search pontua os documentos mais alto se o termo aparecer com frequĂȘncia em um documento e mais baixo se o termo aparecer em muitos documentos da collection. O MongoDB 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.

Dica

Veja: Aprenda Assistindo

Assista a este vĂ­deo para ter uma visĂŁo geral de pesquisa e rastreamento de suas queries com o MongoDB Search. Neste vĂ­deo, vocĂȘ pode aprender mais sobre operadores do MongoDB Search e como os documentos de o MongoDB Search pontua documentos nos resultados.

Duração: 15 Minutos

VocĂȘ pode criar e executar queries no MongoDB Search usando os seguintes clientes:

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 MongoDB Search assumirĂĄ como padrĂŁo um Ă­ndice denominado default. Se vocĂȘ nĂŁo tiver um Ă­ndice chamado default ou se o Ă­ndice que vocĂȘ especificou nĂŁo existir, o MongoDB 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ção index.

  • Especifica um campo nĂŁo indexado. Se vocĂȘ executar uma query em um campo que nĂŁo esteja indexado, o MongoDB 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 coleção para garantir que todos os campos indexĂĄveis dinamicamente na coleção 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 tipo string. Se um campo for indexado como um tipo de campo do MongoDB Search diferente de string, como stringFacet ou autocomplete, o MongoDB Search nĂŁo retornarĂĄ um erro e retornarĂĄ um conjunto de resultados vazio. VocĂȘ deve indexar os campos com valores de tipo de dados BSON string como tipo de string para fazer query dos campos usando o operador de texto.

mongot retorna um erro PlanExecutor se sua query $search :

  • Especifica um campo que Ă© indexado como um tipo de dados incorreto. Nesse caso, se vocĂȘ executar uma query, o MongoDB 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 facet (MongoDB Search Operator) nos campos string, number ou date, crie um Ă­ndice para os campos usando o tipo de campo correspondente do MongoDB Search, como stringFacet, number e date respectivamente. Para saber mais, consulte Tipos de dados com e sem suporte.