Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

planCacheSetFilter (comando de base de datos)

planCacheSetFilter

Configurá un filtro de índice para una colección. Si un filtro de índice ya existe para la forma del query de caché del plan, el comando reemplaza el filtro de índice anterior.

Nuevo en la versión 8.0.

A partir de MongoDB 8.0, utiliza la configuración del query en lugar de añadir filtros de índice. Los filtros de índices están en desuso a partir de MongoDB 8.0.

La configuración de queries tiene más funcionalidades que los filtros de índices. Además, los filtros de índice no son persistentes y no puedes crear fácilmente filtros de índice para todos los nodos del clúster. Para añadir ajustes de query y explorar ejemplos, consulta setQuerySettings.

El optimizador de query utiliza la configuración del query como entrada adicional durante la planificación del query, lo que afecta al plan seleccionado para ejecutar el query.

Los ajustes se aplican a la forma de la query en todo el clúster. El clúster retiene la configuración después del apagado.

Puedes añadir configuraciones de query para los comandos find, distinct, y aggregate.

Para remover la configuración del query, utilice removeQuerySettings. Para obtener la configuración del query, utilice una etapa de $querySettings en una canalización de agregación.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Importante

Este comando no es compatible con los clústeres M0 y Flex. Para obtener más información, consulta Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El comando tiene la siguiente sintaxis:

db.runCommand(
{
planCacheSetFilter: <collection>,
query: <query>,
sort: <sort>,
projection: <projection>,
collation: { <collation> },
indexes: [ <index1>, <index2>, ...],
comment: <any>
}
)

La forma del query de la caché de planes para el filtro de índices es la combinación de:

  • query

  • sort

  • projection

  • collation

El comando tiene los siguientes campos:

Campo
Tipo
Descripción

planCacheSetFilter

string

El nombre de la colección para el filtro de índice.

query

Documento

El predicado de la query para el filtro del índice.

Solo la estructura del predicado, incluidos los nombres de los campos, se utiliza en el filtro de índice. Los valores de campo en el predicado de la query no se utilizan. Por lo tanto, el predicado de query en un filtro de índice es utilizado por queries similares que solo difieren en los valores de los campos.

sort

Documento

opcional. El orden para el filtro de índice.

projection

Documento

opcional. La proyección para el filtro de índice.

collation

Documento

Especifica la intercalación a utilizar para la operación.

La intercalación permite a los usuarios especificar reglas propias del lenguaje para la comparación de strings, como reglas para el uso de mayúsculas y minúsculas y marcas de acento.

La opción de intercalación tiene la siguiente sintaxis:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

Al especificar la intercalación, el campo locale es obligatorio; todos los demás campos de intercalación son opcionales. Para las descripciones de los campos, consulta Documento de intercalación.

Si no se especifica la intercalación, pero la colección tiene una intercalación por defecto (ver db.createCollection()), la operación utiliza la intercalación especificada para la colección.

Si no se especifica ninguna intercalación para la colección o para las operaciones, MongoDB utiliza la comparación binaria simple usada en versiones anteriores para las comparaciones de strings.

No puedes especificar varias intercalaciones para una operación. Por ejemplo, no puedes especificar diferentes intercalaciones por campo, o si realizas una búsqueda con un ordenamiento, no puedes usar una intercalación para la búsqueda y otra para el ordenamiento.

A partir de MongoDB 6.0, un filtro de índice utiliza la intercalación establecida previamente mediante el comando planCacheSetFilter.

A partir de MongoDB 8.0, utiliza la configuración del query en lugar de añadir filtros de índice. Los filtros de índices están en desuso a partir de MongoDB 8.0.

La configuración de queries tiene más funcionalidades que los filtros de índices. Además, los filtros de índice no son persistentes y no puedes crear fácilmente filtros de índice para todos los nodos del clúster. Para añadir ajustes de query y explorar ejemplos, consulta setQuerySettings.

indexes

arreglo

Una matriz de filtros de índice para la forma de consulta de caché del plan especificado.

Especifica los filtros de índice como uno de estos arreglos:

  • Documentos de especificación de índice. Por ejemplo, [ { x : 1 }, ... ].

  • Nombres de índices. Por ejemplo, [ "x_1", ... ].

El optimizador del query utiliza un escaneo de colección o los arreglos de índice para el plan del query. Si los índices especificados no existen o están ocultos, el optimizador utiliza un escaneo de colección.

Para múltiples índices con el mismo patrón de clave, debes especificar el índice como un arreglo de nombres.

comment

any

Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:

Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.).

Los filtros de índice solo existen durante la duración del proceso del servidor y no persisten después del apagado. Para borrar los filtros de índice, utilice el comando planCacheClearFilters.

Un usuario debe tener acceso que incluya la acción planCacheIndexFilter.

El siguiente ejemplo crea un filtro de índice en la colección orders de modo que, para las consultas que consisten únicamente en una coincidencia de igualdad en el campo status sin ninguna proyección ni ordenamiento, el optimizador de consultas evalúa únicamente los dos índices especificados y el escaneo de la colección para el plan ganador:

db.runCommand(
{
planCacheSetFilter: "orders",
query: { status: "A" },
indexes: [
{ cust_id: 1, status: 1 },
{ status: 1, order_date: -1 }
]
}
)

En el predicado de la query, solo la estructura del predicado, incluyendo los nombres de los campos, es significativa; los valores son insignificantes. Como tal, el filtro creado se aplica a las siguientes operaciones:

db.orders.find( { status: "D" } )
db.orders.find( { status: "P" } )

Para ver si MongoDB aplicará un filtro de índice para una forma de consulta de caché de plan, verifique el indexFilterSet campo del método db.collection.explain() cursor.explain() o.

El siguiente ejemplo crea un filtro de índice para la colección orders. El filtro se aplica a las consultas cuyo predicado es una coincidencia exacta en el campo item, donde solo se proyecta el campo quantity y se especifica una ordenación ascendente por el campo order_date.

db.runCommand(
{
planCacheSetFilter: "orders",
query: { item: "ABC" },
projection: { quantity: 1, _id: 0 },
sort: { order_date: 1 },
indexes: [
{ item: 1, order_date: 1 , quantity: 1 }
]
}
)

Para la forma del query de la caché del plan, el optimizador del query sólo considerará los planes indexados que utilicen el índice { item: 1, order_date: 1, quantity: 1 }.

El siguiente ejemplo crea un filtro de índice para la colección orders. El filtro se aplica a queries cuyo predicado es una coincidencia exacta en el campo item y la intercalación en_US (inglés de Estados Unidos).

db.runCommand(
{
planCacheSetFilter: "orders",
query: { item: "Movie" },
collation: { locale: "en_US" },
indexes: [
{ item: 1, order_date: 1 , quantity: 1 }
]
}
)

Para la forma del query de la caché de planes, el optimizador del query solo utiliza planes indexados que usan el índice { item: 1, order_date: 1, quantity: 1 }.

A partir de MongoDB 6.0, un filtro de índice utiliza la intercalación configurada previamente mediante el comando planCacheSetFilter.

A partir de MongoDB 8.0, utiliza la configuración del query en lugar de añadir filtros de índice. Los filtros de índices están en desuso a partir de MongoDB 8.0.

La configuración de queries tiene más funcionalidades que los filtros de índices. Además, los filtros de índice no son persistentes y no puedes crear fácilmente filtros de índice para todos los nodos del clúster. Para añadir ajustes de query y explorar ejemplos, consulta setQuerySettings.

Tip

Volver

planCacheListFilters

En esta página