$[identificador] (Posicional Filtrado)

Última atualização: 2026-10-09

$[identificador] (Posicional Filtrado)

$[identificador] é o operador posicional que, junto com arrayFilters, atualiza apenas os elementos do array que correspondem a uma condição. `{ $set: { 'grades.$[elem]': 90 } }, { arrayFilters: [{ 'elem.grade': { $gte: 85 } }] }`. A atualização de array mais flexível, introduzida no MongoDB 3.6; os identificadores são definidos em arrayFilters e podem corresponder a campos de documentos aninhados.

CategoriaModificador de Atualização
Versão do MongoDB3.6+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ <operador de atualização>: { '<campo de array>.$[<identificador>]': <valor> } }, { arrayFilters: [ { '<identificador>.<campo>': <condição> } ] }

⚙️ Parâmetros

campo de arrayO campo de matriz a atualizar.
identificadorUm espaço reservado definido em arrayFilters, por exemplo elem.
arrayFiltersA matriz de condições que define as regras de correspondência de identificadores.

Retorno:O resultado da atualização

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// $[elem]: atualiza apenas notas >= 85
// arrayFilters define a regra do elem
db.students.updateOne(
  { _id: 1 },
  { $set: { 'grades.$[elem]': 100 } },
  { arrayFilters: [{ 'elem': { $gte: 85 } }] }
)

Saída:

// Apenas notas de 85 ou mais viram 100; o restante permanece inalterado

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre $[elem] e $[]?
A$[] atualiza todos os elementos; $[elem] com arrayFilters atualiza apenas os correspondentes.
QComo escrevo arrayFilters?
A{ arrayFilters: [{ 'elem': { $gte: 85 } }] }; identificadores não têm prefixo $.
QPosso filtrar em campos aninhados?
ASim, ex.: { 'elem.type': 'exam' }.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%