Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$meta (operador de expresión)

$meta

Devuelve los metadatos asociados con un documento, por ejemplo, "textScore" al realizar una búsqueda de texto.

Una expresión $meta tiene la siguiente sintaxis:

{ $meta: <metaDataKeyword> }

La expresión $meta puede especificar los siguientes valores como <metaDataKeyword>:

Keyword
Descripción

"textScore"

Devolver la puntuación asociada a la query $text correspondiente para cada documento coincidente. La puntuación del texto indica la concordancia del documento con el término o términos buscados.

{ $meta: "textScore" } se debe usar junto con una query $text.

En versiones anteriores, si no se usa en conjunto con una $text query, retorna una puntuación nula.

"indexKey"

Devuelve una clave de índice para el documento si se utiliza un índice que no es detexto. La expresión { $meta: "indexKey" } es solo para fines de depuración, y no para la lógica de la aplicación, y se prefiere sobre cursor.returnKey().

MongoDB Search proporciona palabras clave $meta adicionales, como por ejemplo:

Consulta la documentación de MongoDB Search para más detalles.

Importante

Las siguientes palabras clave $meta no son compatibles con Stable API V1:

  • "textScore"

  • "indexKey"

  • "score"

  • "searchScore"

  • "scoreDetails"

  • "searchHighlights"

  • "searchSequenceToken"

  • "searchScoreDetails"

  • "vectorSearchScore"

  • "searchRootDocumentId"

Puedes usar searchScore solo en consultas $search y vectorSearchScore solo en consultas $vectorSearch. Si usas searchScore y vectorSearchScore en cualquier otra consulta, esta fallará.

Puedes usar searchRootDocumentId solo en consultas $search con returnScope.

  • La expresión { $meta: "textScore" } debe usarse junto con $text. Por ejemplo:

    • En la agregación, debe especificar una etapa $match con una consulta $text en la pipeline para utilizar la expresión { $meta: "textScore" } en la(s) etapa(s) posterior(es). Si no especifica la consulta $text en la etapa $match, la operación fallará.

    • En find, debes especificar el operador $text en el predicado de query para usar { $meta: "textScore" }. Si no especifica el operador $text en el predicado de query, la operación falla.

    Nota

    $text Proporciona funcionalidades de consulta de texto para implementaciones autogestionadas (sin Atlas). Para datos alojados en MongoDB, MongoDB también ofrece una solución mejorada de consulta de texto completo: MongoDB Search.

  • En agregación, la expresión { $meta: "textScore" } puede incluirse en varias etapas que aceptan expresiones de agregación, como $project, $group $sort, etc.

  • En "find", la expresión { $meta: "textScore" } puede ser incluida en la proyección y en sort().

  • La expresión { $meta: "textScore" } puede formar parte del documento de proyección para incluir los metadatos de la puntuación de texto.

  • La expresión $meta puede estar presente tanto en una proyección de inclusión como en una de exclusión.

  • Si configuró la expresión con un nombre de campo que ya existe en el documento, el valor de los metadatos proyectados sobrescribe el valor existente.

  • En la agregación, después de una etapa que genera un campo con el valor del puntaje de texto, puede especificar una condición de query u operar en el campo en etapas posteriores. Por ejemplo, consulta $text en la canalización de agregación.

  • En find, no puedes especificar una condición de query sobre la puntuación de texto. Use la agregación en su lugar.

  • La expresión { $meta: "textScore" } puede usarse como parte de una operación de ordenación para ordenar por los metadatos de puntaje de texto; es decir,

    • En la agregación, $sort stage.

    • En find, método sort().

  • Los metadatos "textScore" se colocan en orden descendente.

  • Para usar en una operación de ordenación, establezca la expresión { $meta: "textScore" } en un nombre de campo arbitrario. El sistema de query ignora el nombre del campo.

  • En la agregación, puedes ordenar los documentos resultantes por { $meta: "textScore" } sin tener que proyectar también el textScore.

  • En la búsqueda, puede ordenar los documentos resultantes por { $meta: "textScore" } sin tener que proyectar también el textScore.

  • La expresión { $meta: "indexKey" } es solo para fines de depuración y no para lógica de aplicaciones.

  • Se prefiere la expresión { $meta: "indexKey" } sobre cursor.returnKey().

  • En la agregación, la expresión { $meta: "indexKey" } se puede incluir en varias etapas que aceptan expresiones de agregación, como $project, $group $sortByCount, etc., pero no $sort. Sin embargo, con un pipeline de agregación, primero puedes proyectar la expresión { $meta: "indexKey" } (como en un $project, $addFields, etc.), y luego, ordenar por ese campo en una etapa $sort posterior.

  • En find, la expresión { $meta: "indexKey" } solo está disponible como parte del documento de proyección.

  • El valor devuelto depende de cómo la base de datos decide representar los valores en un índice y puede cambiar entre versiones. El valor representado puede no ser el valor real del campo.

  • El valor devuelto depende del plan de ejecución elegido por el sistema. Por ejemplo, si hay dos índices posibles que pueden utilizarse para responder a la query, entonces el valor de los metadatos "claveIndice" depende de qué índice se seleccione.

  • Si un índice no se utiliza, la expresión { $meta: "indexKey" } no devuelve un valor y el campo no se incluye como parte de la salida.

Califique esta página