$elemMatch (Correspondência de Elemento de Array)

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

$elemMatch (Correspondência de Elemento de Array)

$elemMatch corresponde a documentos onde pelo menos um elemento do array satisfaz todas as condições fornecidas. `{ scores: { $elemMatch: { $gt: 80, $lt: 90 } } }` exige que uma única pontuação seja ao mesmo tempo acima de 80 e abaixo de 90. Sem $elemMatch, consultas de array com múltiplas condições podem corresponder em elementos diferentes — a armadilha clássica de consultas em arrays.

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

📝 Sintaxe

{ <campo>: { $elemMatch: { <condição1>, <condição2>, ... } } }

⚙️ Parâmetros

campoO campo de matriz a corresponder.
condiçãoCondições de consulta que o elemento deve satisfazer por completo.

Retorno:Cursor dos documentos correspondentes

▶ Exemplo

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

// $elemMatch: uma única pontuação entre 80 e 90
// O mesmo elemento deve satisfazer ambas
db.students.find({ scores: { $elemMatch: { $gt: 80, $lt: 90 } } })

// Errado: pode corresponder em elementos diferentes
// db.students.find({ scores: { $gt: 80, $lt: 90 } })

Saída:

// Retorna estudantes com uma única pontuação acima de 80 e abaixo de 90

📌 Notas

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre $elemMatch e condições de array simples?
A{ $gt: 80, $lt: 90 } simples pode corresponder em elementos diferentes; $elemMatch força que um único elemento satisfaça ambas.
Q$elemMatch pode corresponder a arrays de documentos aninhados?
ASim, referencie campos aninhados, ex.: { $elemMatch: { type: 'exam', score: { $gte: 90 } } }.
Q$elemMatch pode ser aplicado a apenas um campo?
ASim, ele atinge um único campo de array; use um $elemMatch separado por campo de array.
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%