Docs Menu
Docs Home
/ /
Caché del plan del query

Filtro de conjunto de caché de planificación

planCacheSetFilter

Establecer un Filtro de índice para una colección. Si ya existe un filtro de índice para la forma de consulta, el comando anula el filtro de índice anterior.

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 M,0 M2 y5 M. Para obtener más información, consulte 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>,
indexes: [ <index1>, <index2>, ...],
comment: <any>
}
)

El comando tiene el siguiente planCacheSetFilter campo:

Campo
Tipo
Descripción

planCacheSetFilter

string

El nombre de la colección.

query

Documento

El predicado de consulta asociado al filtro de índice. Junto con sort projectiony, el query predicado conforma la forma de consulta para el filtro de índice especificado.

Solo la estructura del predicado, incluidos los nombres de campo, es significativa; los valores del predicado de consulta son irrelevantes. Por lo tanto, los predicados de consulta abarcan consultas similares que difieren únicamente en los valores.

sort

Documento

Opcional. El orden asociado al filtro. Junto con query projectiony,sort conforma la forma de consulta para el filtro de índice especificado.

projection

Documento

Opcional. La proyección asociada al filtro. Junto con query sorty,projection conforma la forma de la consulta para el filtro de índice especificado.

indexes

arreglo

Un arreglo de filtros de índices para la forma del queryespecificada.

Especifique los filtros de índice como:

  • una serie de documentos de especificación de índices, por ejemplo [ { x : 1 }, ... ]

  • un arreglo de nombres de índices, por ejemplo, [ "x_1", ... ]

Debido a que el optimizador de consultas elige entre el escaneo de colección y estos índices, si los índices especificados no existen o están ocultos, el optimizador elegirá el escaneo de colección.

En el caso de que haya varios índices con el mismo patrón de clave, deberá especificar el índice por nombre.

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 mientras dura el proceso del servidor y no persisten después del apagado; sin embargo, también puede borrar los filtros de índice existentes usando el planCacheClearFilters comando.

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

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 a una forma del query, verifica el campo indexFilterSet del método db.collection.explain() o del cursor.explain().

El siguiente ejemplo crea un filtro de índice para la colección orders. El filtro se aplica a consultas cuyo predicado coincide con el campo item, donde solo se proyecta el campo quantity y se especifica una ordenación ascendente por 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 de consulta, el optimizador de consultas solo considerará los planes indexados que utilicen el índice { item: 1, order_date: 1, quantity: 1 }.

Tip

Volver

Filtros de lista de caché de planificación

En esta página