planCacheSetFilter
Definição
planCacheSetFilter
Defina umfiltro de índice para uma collection. Se já existir um filtro de índice para a forma de query, o comando substituirá o filtro de índice anterior.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Este comando não é suportado em clusters M0, M2 e M5 . Para obter mais informações, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { planCacheSetFilter: <collection>, query: <query>, sort: <sort>, projection: <projection>, collation: { <collation> }, indexes: [ <index1>, <index2>, ...], comment: <any> } )
A forma de query para o filtro de índice é a combinação de:
query
sort
projection
collation
Campos de comando
O comando tem os seguintes campos:
Campo | Tipo | Descrição | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
planCacheSetFilter | string | O nome da collection para o filtro de índice. | ||||||||||
query | documento | O predicado de query para o filtro de índice. Somente a estrutura do predicado, incluindo os nomes dos campos, é usada no filtro de índice. Os valores de campo no predicado de query não são utilizados. Portanto, o predicado de query em um filtro de índice é usado por queries semelhantes que diferem apenas nos valores de campo. | ||||||||||
sort | documento | Opcional. A classificação do filtro de índice. | ||||||||||
projection | documento | Opcional. A projeção do filtro de índice. | ||||||||||
collation | documento | Especifica o agrupamento a ser usado para a operação. A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de strings, como regras para letras maiúsculas e marcas de acento. A opção de agrupamento tem a seguinte sintaxe:
Ao especificar agrupamento, o campo Se o agrupamento não for especificado, mas a coleção tiver um agrupamento padrão (consulte Se nenhum agrupamento for especificado para a coleção ou para as operações, o MongoDB usa a comparação binária simples usada nas versões anteriores para comparações de strings. Você não pode especificar vários agrupamentos para uma operação. Por exemplo, você não pode especificar agrupamentos diferentes por campo ou, se estiver realizando uma busca com uma classificação, não poderá usar um agrupamento para a busca e outro para a classificação. Iniciando no MongoDB 6.0, um filtro de índice utiliza a coleção definida anteriormente utilizando o comando | ||||||||||
indexes | array | Uma array de filtros de índice para a forma de query especificada. Especifique os filtros de índice como uma destas arrays:
O otimizador de query usa uma varredura de collection ou as arrays de índice para o plano de query. Se os índices especificados não existirem ou estiverem ocultos , o otimizador utilizará uma varredura de collection. Para vários índices com o mesmo padrão de chave, você deve especificar o índice como uma array de nomes. | ||||||||||
comment | any | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
Os filtros de índice existem apenas durante o processo do servidor e não persistem após o desligamento. Para limpar os filtros de índice, utilize o comando planCacheClearFilters
.
Acesso necessário
O usuário deve ter acesso que inclua a ação planCacheIndexFilter
.
Exemplos
Definir filtro na forma de query com apenas predicado
O exemplo a seguir cria um filtro de índice na coleção orders
de modo que, para consultas que consistem apenas em uma correspondência de igualdade no campo status
sem nenhuma projeção e classificação, o otimizador de consulta avalia somente os dois índices especificados e a verificação da coleção para o plano vencedor:
db.runCommand( { planCacheSetFilter: "orders", query: { status: "A" }, indexes: [ { cust_id: 1, status: 1 }, { status: 1, order_date: -1 } ] } )
No predicado de query, somente a estrutura do predicado, incluindo os nomes dos campos, são significantes; os valores são insignificantes. Dessa forma, o filtro criado se aplica às seguintes operações:
db.orders.find( { status: "D" } ) db.orders.find( { status: "P" } )
Para ver se o MongoDB aplicará um filtro de índice para uma forma de query, verifique o campo indexFilterSet
do método db.collection.explain()
ou cursor.explain()
.
Definir filtro na forma de query consistindo em predicado, projeção e classificação
O exemplo a seguir cria um filtro de índice para a collection orders
. O filtro se aplica a query cujo predicado é uma correspondência de igualdade no campo item
, onde somente o campo quantity
é projetado e uma classificação ascendente por order_date
é especificada.
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 a forma de query, o otimizador de query considerará somente planos indexados que utilizam o índice { item: 1, order_date: 1, quantity: 1 }
.
Definir filtro na forma de query consistindo em predicado e agrupamento
O exemplo a seguir cria um filtro de índice para a collection orders
. O filtro se aplica a query cujo predicado é uma correspondência de igualdade no campo item
e no agrupamento en_US
(inglês dos estados unidos).
db.runCommand( { planCacheSetFilter: "orders", query: { item: "Movie" }, collation: { locale: "en_US" }, indexes: [ { item: 1, order_date: 1 , quantity: 1 } ] } )
Para a forma de query, o otimizador de query utiliza somente planos indexados que utilizam o índice { item: 1, order_date: 1, quantity: 1 }
.
Iniciando no MongoDB 6.0, um filtro de índice utiliza a coleção definida anteriormente utilizando o comando planCacheSetFilter
.