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

planCacheSetFilter

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Acesso necessário
  • Exemplos
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.

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>,
indexes: [ <index1>, <index2>, ...],
comment: <any>
}
)

O comando planCacheSetFilter tem o seguinte campo:

Campo
Tipo
Descrição

planCacheSetFilter

string

O nome da collection.

query

documento

O predicado de query associado ao filtro de índice. Juntamente com o sort e o projection, o predicado query compõem a forma de query para o filtro de índice especificado.

Somente a estrutura do predicado, incluindo os nomes dos campos, é significativa; os valores no predicado de query são insignificantes. Dessa forma, os predicados de query abrangem queries semelhantes que diferem apenas nos valores.

sort

documento

Opcional. A classificação associada ao filtro. Juntamente com o query e o projection, o sort compõem a forma de query para o filtro de índice especificado.

projection

documento

Opcional. A projeção associada ao filtro. Juntamente com o query e o sort, o projection compõem a forma de query para o filtro de índice especificado.

indexes

array

Uma array de filtros de índice para a forma de query especificada.

Especifique os filtros de índice como:

  • uma array de documentos de especificação de índices, por exemplo [ { x : 1 }, ... ]

  • uma array de nomes de índice, por exemplo [ "x_1", ... ]

Como o otimizador de query escolhe entre a verificação da collection e esses índices, se os índices especificados forem inexistentes ou ocultos, o otimizador escolherá a verificação da collection.

Em casos de vários índices com o mesmo padrão de chave, você deve especificar o índice por nome.

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; no entanto, você também pode limpar filtros de índice existentes usando 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, verifique 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, o otimizador de query considerará somente planos indexados que utilizam o índice { item: 1, order_date: 1, quantity: 1 } .

Dica

Veja também:

Voltar

planCacheListFilters