$searchO estágio
$searchrealiza uma pesquisa de texto completo no campo ou campos especificados. O campo ou campos devem ser cobertos por um índice do MongoDB Search .
Sintaxe
Um estágio de pipeline do $search tem a seguinte forma de protótipo:
{ $search: { "index": "<index-name>", "<operator-name>"|"<collector-name>": { <operator-specification>|<collector-specification> }, "highlight": { <highlight-options> }, "concurrent": true | false, "count": { <count-options> }, "searchAfter"|"searchBefore": "<encoded-token>", "scoreDetails": true| false, "sort": { <fields-to-sort>: 1 | -1 }, "returnScope": { "path": "<embedded-documents-field-to-retrieve>" }, "returnStoredSource": true | false, "tracking": { <tracking-option> }, "searchNodePreference": { "key": <preference-string> } } }
Campos
O estágio $search recebe um documento com os seguintes campos:
Campo | Tipo | necessidade | Descrição |
|---|---|---|---|
| objeto | Condicional | Nome do coletor para utilizar com a query. Você pode fornecer um documento que contenha as opções específicas do coletor como valor para esse campo. Isto ou |
| booleano | Opcional | Paralelize a procura entre segmentos em nós de pesquisa dedicados. Se você não tiver nós de pesquisa separados no seu cluster, a Pesquisa MongoDB ignorará esta sinalização. Se omitido, o padrão é |
| objeto | Opcional | Documento que especifica as opções de contagem para recuperar uma contagem dos resultados. Para saber mais, consulte Resultados da pesquisa de contagem do MongoDB. |
| objeto | Opcional | Documento que especifica as opções de destaque para exibir os termos de pesquisa em seu contexto original. |
| string | Opcional | Nome do índice do MongoDB Search a ser usado. Se omitido, o padrão é Se você der o nome A pesquisa do MongoDB não retorna resultados se você digitar incorretamente o nome do índice ou se o índice especificado ainda não existir no cluster. |
| objeto | Condicional | |
| Objeto | Opcional | Objeto que define o contexto da query para o campo de documento incorporado especificado. Você também deve especificar |
| booleano | Condicional | Sinalizador que especifica se uma pesquisa completa de documentos deve ser executada no banco de dados de backend ou se deseja retornar apenas campos de origem armazenados diretamente do MongoDB Search. Se omitido, o padrão é Para saber mais, consulte Devolver campos de origem armazenados. |
| string | Opcional | Ponto de referência para recuperação de resultados. |
| string | Opcional | Ponto de referência para recuperação de resultados. |
| booleano | Opcional | Sinalizador que especifica se deseja recuperar um detalhamento detalhado da pontuação para os documentos nos resultados. Se omitido, o padrão é |
| objeto | Opcional | Documento que especifica os campos para classificar os resultados do MongoDB Search em ordem crescente ou decrescente. Você pode classificar por data, número (inteiro, float e valores duplos) e valores de string. Para saber mais, consulte Classificar resultados da pesquisa do MongoDB. |
| objeto | Opcional | Documento que especifica a opção de rastreamento para recuperar informações analíticas sobre os termos de pesquisa. AVISO: isso agora está obsoleto. O fim oficial da vida útil e a remoção completa do suporte entrarão em vigor em 5 de dezembro de 2025. Portanto, o Atlas não coletará mais dados de query para exibição na IU do Atlas a partir desta data, e a IU desse recurso será removida. Se tiver alguma dúvida ou precisar de mais assistência, entre em contato com o suporte ou com seu Executivo de contas. |
| objeto | Opcional | Documento que habilita o roteamento preferencial para esta query. Se você definir um valor para esse campo, o Atlas executará essa query no mesmo nó de pesquisa todas as vezes, desde que o valor permaneça o mesmo, substituindo o comportamento padrão de roteamento de query. Este documento contém um par de valores-chave onde o valor de IMPORTANTE: ativar essa configuração pode melhorar a consistência dos resultados da sua pesquisa, mas não oferece garantias de consistência perpétua. As alterações em seu conjunto de dados, estrutura de índice, topologia de cluster ou disponibilidade de nó preferencial ainda podem causar inconsistências. |
Comportamento
$search deve ser o primeiro estágio de qualquer pipeline em que apareça. $search não pode ser usado em:
um estágio de pipeline
$facet
Variável de agregação
$search retorna somente os resultados da sua query. Os resultados de metadados da sua query $search são salvos na variável de agregação $$SEARCH_META. Você pode usar a variável $$SEARCH_META para ver os resultados de metadados de sua query $search.
A variável de agregação $$SEARCH_META pode ser usada em qualquer lugar após um estágio $search em qualquer pipeline, mas não pode ser usada após o estágio $lookup ou $unionWith em qualquer pipeline. A variável de agregação $$SEARCH_META não pode ser usada em nenhuma etapa subsequente após um estágio $searchMeta.
Exemplo
Suponha o seguinte índice na coleção sample_mflix.movies .
{ "mappings": { "dynamic": false, "fields": { "released": { "type": "date" } } } }
As seguintes pesquisas de query sobre filmes lançados perto de 01 de setembro de 2011 usando o estágio $search. A consulta inclui um:
Etapa
$projectpara excluir todos os campos nos documentos, excetotitleereleased.$facetestágio que produz um:docscampo com uma array dos5principais resultados de pesquisametacampo com o valor de$$SEARCH_METAvariável
db.movies.aggregate([ { "$search": { "near": { "path": "released", "origin": ISODate("2011-09-01T00:00:00.000+00:00"), "pivot": 7776000000 } } }, { $project: { "_id": 0, "title": 1, "released": 1 } }, { "$limit": 5 }, { "$facet": { "docs": [], "meta": [ {"$replaceWith": "$$SEARCH_META"}, {"$limit": 1} ] } } ])
{ "docs" : [ { "title" : "Submarino", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Devil's Playground", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Bag It", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Dos", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "We Were Here", "released" : ISODate("2011-09-01T00:00:00Z") } ], "meta" : [ { "count" : { "lowerBound" : NumberLong(17373) } } ] }
Para saber mais sobre a variável $$SEARCH_META e seu uso, consulte:
Solução de problemas
Se você estiver enfrentando problemas com suas queries $search do MongoDB Search, consulte Solucionar problemas de queries.