$filter (Filtrar Array)

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

$filter (Filtrar Array)

$filter percorre um array, mantém os elementos que satisfazem uma condição e retorna um array novo. É o operador indicado para filtrar arrays dentro de expressões de agregação. Casos de uso típicos: selecionar itens enviados de um pedido, descartar tags inválidas ou selecionar avaliações acima de um limite de pontuação. Sua sintaxe exige um array de entrada (input), um nome de variável (as) e uma expressão condicional (cond) que referencia o elemento atual via $$variável. Ele apenas remove elementos sem transformá-los; combine com $map quando os elementos também precisarem mudar. Uma entrada null resulta em null.

CategoriaArray
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $filter: { input: <array>, as: <variável>, cond: <condição> } }

⚙️ Parâmetros

inputA expressão de matriz a filtrar.
asO nome da variável do elemento atual, referenciada como $$variable em cond; opcional, o padrão é $$this.
condUma expressão de condição que resolva para um booleano; decide quais elementos permanecem.

Retorno:Uma nova matriz de elementos que satisfazem a condição; null se a entrada for null

▶ Exemplo

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

// $filter: manter apenas itens com estoque acima de zero
db.orders.aggregate([
  { $project: {
      inStock: { $filter: { input: '$items', as: 'it', cond: { $gt: ['$$it.qty', 0] } } }
  } }
])

Saída:

{ '_id': 1, 'inStock': [ { 'sku': 'A01', 'qty': 2 } ] }
{ '_id': 2, 'inStock': [] }

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre $filter e $map?
A$filter remove elementos por condição sem alterá-los; $map transforma cada elemento sem mudar a contagem. Frequentemente são combinados.
QComo referencio a variável em cond?
APrefixe a variável com dois cifrões, ex.: { $gt: ['$$it.qty', 0] }; use $$this quando as for omitido.
QO $filter funciona em um array de objetos?
ASim — acesse campos de objeto com $$variável.campo em cond, ex.: '$$it.price'.
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%