Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / / /

$search

Nesta página

  • Sintaxe
  • Campos
  • Comportamento
  • Variável de agregação
  • Solução de problemas
$search

O estágio $search realiza uma Full Text Search no campo ou campos especificados. O campo ou campos devem ser cobertos por umíndicedo Atlas Search .

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
},
"returnStoredSource": true | false,
"tracking": {
<tracking-option>
}
}
}

O estágio $search recebe um documento com os seguintes campos:

Campo
Tipo
necessidade
Descrição

<collector-name>

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 <operator-name> é obrigatório.

concurrent

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 Atlas ignorará esta bandeira. Se omitido, o padrão é false. Para saber mais, consulte Paralelizar a Execução de Query entre Segmentos.

count

objeto

Opcional

Documento que especifica as opções de contagem para recuperar uma contagem dos resultados. Para mais informações, consulte Resultados de contagem do Atlas Search.

highlight

objeto

Opcional

Documento que especifica as opções de destaque para exibir os termos de pesquisa em seu contexto original.

index

string

Opcional

Nome do índice do Atlas Search a ser usado. Se omitido, o padrão é default.

Se você nomear seu índice default, não precisará especificar um parâmetro index no estágio do pipeline $search . Se você der um nome personalizado ao seu índice, deverá especificar este nome no parâmetro index.

Atlas Search não retorna resultados se você digitar incorretamente o nome do índice ou se o índice especificado ainda não existir no cluster.

<operator-name>

objeto

Condicional

Nome do operador com o qual pesquisar. Você pode fornecer um documento que contenha as opções específicas do operador como o valor para este campo. Isto ou <collector-name> é obrigatório. Use o operador composto para executar uma consulta composta com múltiplos operadores.

returnStoredSource

booleano

Opcional

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 Atlas Search. Se omitido, o padrão é false. Para saber mais, consulte Devolver campos de origem armazenados.

searchAfter

string

Opcional

Ponto de referência para recuperação de resultados. searchAfter retorna documentos começando imediatamente após o ponto de referência especificado. O ponto de referência deve ser um token codificado em Base64 gerado pela palavra-chave $meta searchSequenceToken. Para saber mais, consulte Paginar os resultados. Este campo é mutuamente exclusivo com o campo searchBefore.

searchBefore

string

Opcional

Ponto de referência para recuperação de resultados. searchBefore retorna documentos começando imediatamente antes do ponto de referência especificado. O ponto de referência deve ser um token codificado em Base64gerado pela palavra-chave { $meta searchSequenceToken. Para saber mais, consulte Paginar os resultados. Este campo é mutuamente exclusivo com o campo searchAfter .

scoreDetails

booleano

Opcional

Sinalizador que especifica se deseja recuperar um detalhamento detalhado da pontuação para os documentos nos resultados. Se omitido, o padrão é false. Para visualizar os detalhes, você deve utilizar a expressão $meta no estágio $project. Para saber mais, consulte Retornar detalhes da pontuação.

sort

objeto

Opcional

Documento que especifica os campos para classificar os resultados do Atlas Search em ordem crescente ou decrescente. Você pode classificar por data, número (valores inteiros, flutuantes e double) e valores de string. Para mais informações, consulte Classificar Resultados do Atlas Search.

tracking

objeto

Opcional

Documento que especifica a opção de rastreamento para recuperar informações analíticas sobre os termos de pesquisa.

$search deve ser o primeiro estágio de qualquer pipeline em que apareça. $search não pode ser usado em:

$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 partir do MongoDB 6.0, a variável de agregação $$SEARCH_META não pode ser usada em nenhum estágio 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 $project para excluir todos os campos nos documentos, exceto title e released.

  • $facet estágio que produz um:

    • docs campo com uma array dos 5 principais resultados de pesquisa

    • meta campo com o valor de $$SEARCH_META variá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:

Se você estiver enfrentando problemas com suas queries do Atlas Search $search, consulte Solução de problemas de erros do Atlas Search.

Voltar

1. Escolha o estágio do pipeline de agregação