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

$text no aggregation pipeline em sistemas autogerenciados

Nesta página

  • Restrições
  • Pontuação de texto
  • Exemplos
  • $search Estágio Atlas Search

Observação

Esta página descreve as funcionalidades de consulta de texto para implantações autogerenciadas (não Atlas). Para dados hospedados no MongoDB Atlas, o MongoDB oferece uma solução aprimorada de consulta de texto completo, Atlas Search.

No aggregation pipeline, a pesquisa de texto está disponível por meio do uso do operador de consulta $text no estágio $match .

Para restrições gerais de operadores $text , consulte restrições de operadores.

Além disso, a pesquisa de texto no aggregation pipeline tem as seguintes restrições:

  • O estágio $match que inclui um $text deve ser o primeiro estágio no pipeline.

  • Um operador $text só pode ocorrer uma vez no estágio.

  • A expressão do operador $text não pode aparecer em expressões $or ou $not.

  • $text, por padrão, não retorna os documentos correspondentes na ordem das pontuações correspondentes. Para classificar por pontuação decrescente, use a expressão de agregação $meta no estágio $sort.

O operador $text atribui uma pontuação a cada documento de resultado. A pontuação representa a relevância de um documento para uma determinada query. A pontuação pode ser parte de uma especificação de pipeline $sort , bem como parte da expressão de projeção. A expressão { $meta: "textScore" } fornece informações sobre o processamento da operação $text . Consulte $meta para ver detalhes sobre como acessar a pontuação para projeção ou classificação.

Os metadados estão disponíveis somente após o estágio $match , que inclui a operação $text .

Os seguintes exemplos assumem uma coleção articles com um índice de texto no campo subject:

db.articles.createIndex( { subject: "text" } )

A seguinte agregação pesquisa o termo cake na etapa $match e calcula o total de views para os documentos correspondentes na etapa $group.

db.articles.aggregate(
[
{ $match: { $text: { $search: "cake" } } },
{ $group: { _id: null, views: { $sum: "$views" } } }
]
)

Para classificar pela pontuação da pesquisa de texto, inclua uma expressão {$meta: "textScore"} no estágio $sort. O exemplo a seguir corresponde ao termo cake ou tea, classifica pelo textScore em ordem decrescente e retorna somente o campo title no conjunto de resultados.

db.articles.aggregate(
[
{ $match: { $text: { $search: "cake tea" } } },
{ $sort: { score: { $meta: "textScore" } } },
{ $project: { title: 1, _id: 0 } }
]
)

Os metadados definidos determinam a ordem de classificação. Por exemplo, os metadados "textScore" são classificados em ordem decrescente. Consulte $meta para obter mais informações sobre metadados, bem como um exemplo de substituição da ordem de classificação padrão dos metadados.

Os metadados "textScore" estão disponíveis para projeções, classificações e condições subsequentes ao estágio $match que inclui a operação $text .

O exemplo a seguir corresponde ao termo cake ou tea, projeta os campos title e score e retorna somente os documentos com score maior que 1.0.

db.articles.aggregate(
[
{ $match: { $text: { $search: "cake tea" } } },
{ $project: { title: 1, _id: 0, score: { $meta: "textScore" } } },
{ $match: { score: { $gt: 1.0 } } }
]
)

A agregação a seguir procura, em espanhol, documentos que contêm o termo saber mas não o termo claro no estágio $match e calcula o views total para os documentos correspondentes no estágio $group.

db.articles.aggregate(
[
{ $match: { $text: { $search: "saber -claro", $language: "es" } } },
{ $group: { _id: null, views: { $sum: "$views" } } }
]
)

Para dados hospedados no MongoDB Atlas, o Atlas Atlas Search fornece o estágio de agregação $search para realizar pesquisas de texto completo em suas coleções.

Voltar

$text