$type (Tipo BSON)
Última atualização: 2026-10-09
$type (Tipo BSON)
$type corresponde a documentos onde o valor de um campo é de um determinado tipo BSON. `{ age: { $type: 'int' } }` corresponde a documentos onde age é um inteiro de 32 bits. Use aliases de tipo (string, object, array, date, double) ou códigos numéricos (1 double, 2 string). A string '21' e o número 21 são tipos diferentes — uma confusão comum.
| Categoria | Elemento e Avaliação |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ <campo>: { $type: <tipo BSON> } }
⚙️ Parâmetros
| campo | O campo do documento cujo tipo será testado. |
|---|---|
| tipo BSON | Um alias ou código de tipo, por exemplo 'int', 'string', 'date', 'array'. |
Retorno:Cursor dos documentos correspondentes
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $type: usuários cujo age é um inteiro
// int significa inteiro de 32 bits
db.users.find({ age: { $type: 'int' } })
// Vários tipos: int ou double
db.users.find({ age: { $type: ['int', 'double'] } })
Saída:
// Retorna usuários cujo age é int; a segunda consulta corresponde a int ou double
📌 Notas
- Os tipos numéricos são divididos em int, long, double, decimal — não os misture
- A string '21' e o número 21 são tipos diferentes; $type é estrito
- Aliases ou códigos funcionam igualmente: 'date' equivale ao código 9
🏷️ Tags Relacionados
💡 Casos Relacionados
Tipos de índice e recursos avançados
Operadores de consulta: um guia completo com mais de 30 operadores
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQuais são os aliases comuns de $type?
Adouble, string, object, array, binData, objectId, bool, date, null, regex, int, long, decimal, timestamp, etc.
QComo consulto um campo do tipo data?
A{ updatedAt: { $type: 'date' } }.
Q$type pode corresponder a null?
ASim, 'null' corresponde a documentos cujo valor do campo é null (o campo deve existir).