Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Caché del plan del query

planCacheSetFilter

planCacheSetFilter

Configurá un filtro de índice para una colección. Si ya existe un filtro de índice para la forma del query, el comando sobrescribe 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 M0, M2, y M5. Para obtener más información, consulte Comandos incompatibles.

  • 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 planCacheSetFilter tiene el siguiente campo:

Campo
Tipo
Descripción

planCacheSetFilter

string

El nombre de la colección.

query

Documento

El predicado de query asociado con el filtro de índice. Junto con el sort y el projection, el predicado query conforma la forma del query para el filtro del índice especificado.

Solo la estructura del predicado, incluidos los nombres de los campos, es significativa; los valores en el predicado de la query no son significativos. Como tal, los predicados de query cubren queries similares que solo difieren en los valores.

sort

Documento

opcional. El tipo asociado al filtro. Junto con el query y el projection, el sort conforman la forma del query para el filtro de índice especificado.

projection

Documento

opcional. La proyección asociada al filtro. Junto con el query y el sort, el projection conforma la forma del query para el filtro de índice especificado.

indexes

arreglo

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

Especifica los filtros de índice como:

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

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

Dado que el optimizador del query 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 casos de múltiples índices con el mismo patrón de clave, debes 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 durante la duración del proceso en el servidor y no persisten después del apagado; sin embargo, también puedes borrar los filtros de índice existentes usando 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 para que, para los queries que consistan únicamente en una coincidencia exacta en el campo status sin ninguna proyección ni orden, el optimizador del query evalúe solo los dos índices especificados y el escaneo de 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 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, el optimizador del query solo considerará planes indexados que utilicen el índice { item: 1, order_date: 1, quantity: 1 }.

Tip

Volver

planCacheListFilters

En esta página