$eq (Igualdade)
Última atualização: 2026-10-09
$eq (Igualdade)
$eq seleciona documentos onde o valor do campo é igual ao valor especificado. É o predicado de correspondência exata mais comum do MongoDB: `{ age: { $eq: 21 } }` é equivalente a `{ age: 21 }`, mas $eq torna a intenção de igualdade explícita e também atua como operador de comparação em expressões de agregação. Observe que $eq é sensível ao tipo: a string "21" não corresponde ao número 21. Também note: um `{ $eq: /padrão/ }` explícito só corresponde a valores de regex BSON, ao contrário do implícito `{ campo: /padrão/ }`, que realiza correspondência por expressão regular.
| Categoria | Comparação |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ <campo>: { $eq: <valor> } }
⚙️ Parâmetros
| campo | O campo do documento a corresponder; caminhos com ponto acessam campos aninhados (ex.: "address.city"). |
|---|---|
| valor | O valor a corresponder. Pode ser um literal ou expressão; sensível ao tipo BSON. |
Retorno:Cursor dos documentos correspondentes
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $eq: correspondência exata em age = 21
db.users.find({ age: { $eq: 21 } })
// Igualdade implícita equivalente
db.users.find({ age: 21 })
// Campo aninhado + sensibilidade a tipo
db.users.find({ "address.city": { $eq: "Beijing" } })
Saída:
// Retorna todos os documentos cujo age é exatamente 21 (tipo número)
{ "_id": ObjectId("..."), "name": "Alice", "age": 21, "address": { "city": "Beijing" } }
📌 Notas
- Sensível ao tipo: { $eq: "21" } não corresponde ao número 21
- Com um valor escalar, $eq corresponde a um campo de array se qualquer elemento for igual a ele (igual a $elemMatch: { $eq: valor }); com um valor de array, o campo deve ser igual ao array inteiro ou conter um elemento que seja exatamente igual a ele
- $eq: null corresponde a documentos onde o campo está ausente OU é null (diferente de $exists: false)
🏷️ Tags Relacionados
💡 Casos Relacionados
Noções básicas sobre consultas a documentos: o método `find` e as projeções
Operadores de consulta: um guia completo com mais de 30 operadores
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é a diferença entre $eq e escrever { age: 21 } diretamente?
AFuncionalmente idênticos; $eq apenas torna a intenção de igualdade explícita e fica mais legível em combinações $and/$or.
Q$eq pode corresponder a null?
ASim. $eq: null corresponde a documentos onde o campo está ausente ou é null. Para corresponder apenas ao null literal, combine com $type: 10 (Null).
QComo $eq se comporta em campos de array?
AEle corresponde se qualquer elemento do array for igual ao valor (equivalente a $elemMatch). Para uma correspondência exata do array inteiro, use o literal de array diretamente ou combine com $size.