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 el <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 adicionales de $meta, como:

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"

Puede usar searchScore solo en $search query y vectorSearchScore solo en $vectorSearch query. Si usas searchScore y vectorSearchScore en cualquier otra query, esa query fallará.

Puede usar searchRootDocumentId solo en $search consultas 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 capacidades de query de texto para implementaciones autogestionadas (que no sean de Atlas). Para los datos alojados en MongoDB, MongoDB también ofrece una solución mejorada de query 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.

  • En la agregación, si se incluye la expresión { $meta: "textScore" } tanto en la proyección como en la clasificación, la proyección y la clasificación pueden tener diferentes nombres de campo para la expresión. El nombre del campo de ordenación es ignorado por el sistema de query.

  • En encontrar, si se incluye la expresión { $meta: "textScore" } tanto en la proyección como en la ordenación, la proyección y la ordenación pueden utilizar diferentes nombres de campo para la expresión. El sistema de query no tiene en cuenta el nombre del campo en el ordenamiento.

  • 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