Definição
$metaRetorna os metadados associados a um documento, por exemplo,
"textScore"ao executar pesquisa de texto.A
$metaexpression has the following syntax:{ $meta: <metaDataKeyword> } The
$metaexpression can specify the following values as the<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().MongoDB Search provides additional
$metakeywords, such as: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"
You can use
searchScoreonly in$searchqueries andvectorSearchScoreonly in$vectorSearchqueries. If you usesearchScoreandvectorSearchScorein any other query, that query will fail.You can use
searchRootDocumentIdonly in$searchqueries withreturnScope.
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.The
$metaexpression can be present in either an inclusion or an exclusion projection.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
In aggregation, if you include the
{ $meta: "textScore" }expression in both the projection and sort, the projection and sort can have different field names for the expression. The field name in the sort is disregarded by the query system.In find, if you include the
{ $meta: "textScore" }expression in both the projection and sort, the projection and sort can have different field names for the expression. The field name in the sort is disregarded by the query system.
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.