Definição
$metaRetorna os metadados associados a um documento, por exemplo,
"textScore"ao executar pesquisa de texto.Uma expressão
$metatem a seguinte sintaxe:{ $meta: <metaDataKeyword> } A expressão
$metapode especificar os seguintes valores como<metaDataKeyword>:KeywordDescrição"textScore"Retorna a pontuação associada à query
$textcorrespondente a cada documento correspondente. A pontuação de texto indica quão bem o documento correspondeu ao termo ou termos de pesquisa.{ $meta: "textScore" }deve ser usado em conjunto com uma query$text.Em versões anteriores, se não usado em conjunto com uma consulta
$text, retornará uma pontuação nula."indexKey"Retorna uma chave de índice para o documento se um índice não texto for usado. A expressão
{ $meta: "indexKey" }é somente para fins de depuração e não para lógica de aplicativo, e é preferida em comparação comcursor.returnKey().O MongoDB Search fornece
$metapalavras-chave adicionais, como:Consulte a documentação do MongoDB Search para obter detalhes.
Importante
As seguintes palavras-chave
$metanão são aceitas na API Estável V1:"textScore""indexKey""score""searchScore""scoreDetails""searchHighlights""searchSequenceToken""searchScoreDetails""vectorSearchScore""searchRootDocumentId"
Você pode usar
searchScoresomente em queries$searchevectorSearchScoresomente em queries$vectorSearch. Se você usarsearchScoreevectorSearchScoreem qualquer outra query, essa query falhará.Você pode usar
searchRootDocumentIdsomente em$searchquery comreturnScope.
Comportamento
Metadados de pontuação de texto $meta: "textScore"
Requer pesquisa $text
A expressão
{ $meta: "textScore" }deve ser usada em conjunto com$text. Por exemplo:No achado, você deve especificar o operador
$textno predicado de query para usar{ $meta: "textScore" }. Se você não especificar o operador$textno predicado da consulta, a operação falhará.
Observação
$textfornece recursos de query de texto para sistemas autogerenciados (não Atlas). Para dados hospedados no MongoDB, o MongoDB também oferece uma solução de query de texto completo aprimorada, MongoDB Search.
Disponibilidade
Uso na projeção
A expressão
{ $meta: "textScore" }pode fazer parte do documento de projeção para incluir os metadados de pontuação de texto.A expressão
$metapode estar presente em uma inclusão ou uma projeção de exclusão.Se você definir a expressão para um nome de campo que já existe no documento, o valor de metadados projetado substituirá o valor existente.
Filtre na pontuação de texto
Na agregação, após um estágio que gera um campo com o valor da pontuação de texto, você poderá especificar uma condição de query ou operar no campo em estágios subsequentes. Por exemplo, veja $text no pipeline de agregação
No achado, você não pode especificar uma condição de query na pontuação de texto. Em vez disso, use aggregation.
Uso na classificação
Os metadados
"textScore"são classificados em ordem decrescente.Para usar em uma operação de classificação, defina a expressão
{ $meta: "textScore" }como um nome de campo arbitrário. O nome do campo é desconsiderado pelo sistema de query.
Classificar sem projeção
Na aggregation, você pode classificar os documentos resultantes por
{ $meta: "textScore" }sem também ter que projetar otextScore.Na operação find, você pode ordenar os documentos resultantes por
{ $meta: "textScore" }sem precisar projetar também otextScore.
Classificar com projeção
Na agregação, se você incluir a expressão
{ $meta: "textScore" }tanto na projeção quanto na classificação, a projeção e a classificação poderão ter nomes de campo diferentes para a expressão. O nome do campo na classificação é desconsiderado pelo sistema de query.No achado, se você incluir a expressão
{ $meta: "textScore" }tanto na projeção quanto na classificação, a projeção e a classificação poderão ter nomes de campo diferentes para a expressão. O nome do campo na classificação é desconsiderado pelo sistema de query.
Metadados da chave do índice $meta: "indexKey" (aggregation e localizar)
Uso
A expressão
{ $meta: "indexKey" }serve apenas para fins de depuração e não para lógica de aplicativo.A expressão
{ $meta: "indexKey" }é preferível acursor.returnKey().
Disponibilidade
No aggregation, a expressão
{ $meta: "indexKey" }pode ser incluída em vários estágios que aceitam expressões de aggregation, como$project,$group$sortByCountetc., mas não$sort. No entanto, com um aggregation pipeline, você pode primeiro projetar a expressão{ $meta: "indexKey" }(como em um$project,$addFieldsetc.) e, em seguida, classificar por esse campo em um estágio$sortsubsequente.No achado, a expressão
{ $meta: "indexKey" }só está disponível como parte do documento de projeção .
Valor de retorno
O valor retornado depende de como o banco de dados decide representar valores em um índice e pode mudar entre versões. O valor representado pode não ser o valor real do campo.
O valor retornado depende do plano de execução escolhido pelo sistema. Por exemplo, se houver dois índices possíveis que podem ser usados para responder à query, o valor dos metadados "indexKey" dependerá de qual índice for selecionado.
Se um índice não for utilizado, a expressão
{ $meta: "indexKey" }não retornará um valor e o campo não será incluído como parte da saída.