$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> } } }
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 | Object that sets the context of the query to the specified embedded document field. You must also specify |
| booleano | Condicional | Flag that specifies whether to perform a full document lookup on the backend database or return only stored source fields directly from MongoDB Search. If omitted, defaults to 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. |
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.