Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

planCacheSetFilter

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Acesso necessário
  • Exemplos
planCacheSetFilter

Defina umfiltro de índice para uma collection. Se já existir um filtro de índice para o plano cache forma de query, o comando substituirá o filtro de índice anterior.

Novidades na versão 8.0.

A partir do MongoDB 8.0, use configurações de query em vez de adicionar filtros de índice. Os filtros de índice estão obsoletos a partir do MongoDB 8.0.

As configurações de query têm mais funcionalidades do que os filtros de índice. Além disso, os filtros de índice não são persistentes e você não pode criar facilmente filtros de índice para todos os nós de cluster. Para adicionar configurações de query e explorar exemplos, consulte setQuerySettings.

O otimizador de query usa as configurações de query como uma entrada adicional durante o planejamento de query, o que afeta o plano selecionado para executar a query.

As configurações se aplicam à forma de query em todo o cluster. O cluster mantém as configurações após o desligamento.

Você pode adicionar configurações de consulta para os comandos find, distinct e aggregate.

Para remover as configurações de query, use removeQuerySettings. Para obter as configurações de consulta, use um estágio $querySettings em um pipeline de agregação .

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

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 do cache do plano para o filtro de índice é a combinação de:

  • query

  • sort

  • projection

  • collation

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:

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

Ao especificar agrupamento, o campo locale é obrigatório; todos os outros campos de agrupamento são opcionais. Para obter descrições dos campos, consulte Documento de agrupamento.

Se o agrupamento não for especificado, mas a coleção tiver um agrupamento padrão (consulte db.createCollection()), a operação usará o agrupamento especificado para a coleção.

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 planCacheSetFilter.

A partir do MongoDB 8.0, use configurações de query em vez de adicionar filtros de índice. Os filtros de índice estão obsoletos a partir do MongoDB 8.0.

As configurações de query têm mais funcionalidades do que os filtros de índice. Além disso, os filtros de índice não são persistentes e você não pode criar facilmente filtros de índice para todos os nós de cluster. Para adicionar configurações de query e explorar exemplos, consulte setQuerySettings.

indexes

array

Uma array de filtros de índice para a forma de query do cache do plano especificado.

Especifique os filtros de índice como uma destas arrays:

  • Documentos de especificação de índices. Por exemplo, [ { x : 1 }, ... ].

  • Nomes do índice. Por exemplo, [ "x_1", ... ].

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 .

O usuário deve ter acesso que inclua a ação planCacheIndexFilter .

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 do cache do plano, marque o campo indexFilterSet do método db.collection.explain() ou cursor.explain() .

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 do cache do plano, o otimizador de query de query considerará apenas os planos indexados que usam o índice { item: 1, order_date: 1, quantity: 1 }.

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 do cache do plano, o otimizador de query de query usa somente planos indexados que usam 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 .

A partir do MongoDB 8.0, use configurações de query em vez de adicionar filtros de índice. Os filtros de índice estão obsoletos a partir do MongoDB 8.0.

As configurações de query têm mais funcionalidades do que os filtros de índice. Além disso, os filtros de índice não são persistentes e você não pode criar facilmente filtros de índice para todos os nós de cluster. Para adicionar configurações de query e explorar exemplos, consulte setQuerySettings.

Dica

Veja também:

Voltar

planCacheListFilters