Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

planejar filtro de conjunto de cache

Nesta página

  • Definição
  • Sintaxe
  • Campos de comando
  • Acesso obrigatório
  • Exemplos
planCacheSetFilter

Defina um filtro 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.

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

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

A partir do MongoDB 6.0, um filtro de índice usa o agrupamento definido anteriormente usando o comando planCacheSetFilter .

indexes
variedade

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

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
qualquer

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, 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 } .

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

A partir do MongoDB 6.0, um filtro de índice usa o agrupamento definido anteriormente usando o comando planCacheSetFilter .

Dica

Veja também:

← planejar filtros de lista de cache