EstĂĄgios de pipeline
MongoDB Search queries take the form of an aggregation pipeline stage. MongoDB Search provides $search and $searchMeta stages, both of which must be the first stage in any query pipeline, including the $lookup and $unionWith sub-pipelines. These stages can be used in conjunction with other aggregation pipeline stages in your query pipeline.
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 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.
You can also search using regex and wildcard expressions. The MongoDB Search compound operator allows you to combine multiple operators inside your $search stage to perform a complex search and filter of data based on what must, must not, or should be present in the documents returned by MongoDB Search. You can use the compound operator to also match or filter documents in the $search stage itself. Running $match after $search is less performant than running $search with the compound operator.
Para saber mais sobre operadores e coletores, consulte Operadores e coletores.
Processamento de Query
mongodemongotno mesmo nĂłWhen you run a query, MongoDB Search uses the configured read preference to identify the node on which to run the query. The query first goes to the MongoDB process, which is
mongodfor a replica set cluster ormongosfor a sharded cluster.For a replica set cluster, the MongoDB process routes the query to the
mongoton the same node. For sharded clusters, your cluster data is partitioned acrossmongodinstances and eachmongotknows about the data on themongodon the same node only. Therefore, you can't run MongoDB Search queries that target a particular shard.mongosdirects the queries to all shards, making these scatter gather queries. If you use zones to distribute a sharded collection over a subset of the shards in the cluster, MongoDB Search routes the query to the zone that contains the shards for the collection that you are querying and runs your$searchqueries on just the shards where the collection is located.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. OmongodentĂŁo realiza uma pesquisa completa do documento implicitamente para os resultados correspondentes e retorna os resultados ao cliente.Se vocĂȘ usar a opção
$searchconcorrente em sua query, o MongoDB Search ativarå o paralelismo intraquery. Para saber mais, consulte Paralelizar a execução de query entre segmentos.mongodemongotem diferentes nósWhen you run a query, the query first goes to the
mongodbased on the configured read preference. By default, themongodprocess routes the search query through a load balancer on the same node, which distributes the requests across all of themongotprocesses. Alternatively, if you set thesearchNodePreferenceparameter for your$searchstage, MongoDB Search runs your query against the same search node each time.O processo
mongotdo MongoDB Search executa a pesquisa e a pontuação e retorna os IDs dos documento e os metadados dos resultados correspondentes paramongod. OmongodentĂŁo realiza uma pesquisa completa do documento para os resultados correspondentes e retorna os resultados ao cliente. Se vocĂȘ usar a opção$searchconcurrent em sua query, o MongoDB Search ativarĂĄ o paralelismo intraquery. Para saber mais, consulte Parallelize Query Execution Across Segments.
Pontuação
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
See: Learn by Watching
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
Clientes aceitos
VocĂȘ pode criar e executar queries no MongoDB Search usando os seguintes clientes:
Solução de problemas de queries
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 MongoDB Search assumirĂĄ como padrĂŁo um Ăndice denominado
default. Se vocĂȘ nĂŁo tiver um Ăndice chamadodefaultou 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çãoindex.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
textem um caminho do campo que nĂŁo Ă© indexado como um tipostring. Se um campo for indexado como um tipo de campo do MongoDB Search diferente destring, comostringFacetouautocomplete, 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 BSONstringcomo tipo de string para fazer query dos campos usando o operador de texto.
PlanExecutor Erro
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 camposstring,numberoudate, crie um Ăndice para os campos usando o tipo de campo correspondente do MongoDB Search, comostringFacet,numberedaterespectivamente. Para saber mais, consulte Tipos de dados com e sem suporte.