$toDate (Converter para Data)
Última atualização: 2026-10-09
$toDate (Converter para Data)
$toDate converte um valor em uma Data BSON. Ele passa datas adiante, trata números como timestamps em milissegundos e interpreta strings ISO 8601. Usos típicos: converter strings de tempo de logs em datas para agrupamento por dia ou padronizar timestamps em milissegundos vindos de frontends. Strings inválidas geram erro, então prefira $convert com onError para dados sujos. Entrada null resulta em null. Em comparação com $dateFromString, $toDate tem sintaxe mais simples e detecta automaticamente formatos ISO.
| Categoria | Conjunto, Condição e Conversão |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $toDate: <expressão> }
⚙️ Parâmetros
| expressão | Uma data, um timestamp numérico em milissegundos ou uma string ISO. |
|---|
Retorno:Um Date; null quando a entrada é null
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $toDate: interpretar uma string de tempo como data
db.logs.aggregate([
{ $project: {
ts: { $toDate: '$timeStr' }
} }
])
Saída:
{ '_id': 1, 'ts': { '$date': '2026-09-25T08:00:00Z' } }
📌 Notas
- Números são timestamps em milissegundos; timestamps em segundos precisam ser multiplicados por 1000 antes
- Strings não ISO (ex.: '2026/09/25') geram erro
- Entrada null resulta em null
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQuais strings ele consegue interpretar?
AFormatos ISO 8601, ex.: '2026-09-25T08:00:00Z'.
QE timestamps em nível de segundos?
AMultiplique por 1000 antes: { $multiply: ['$ts', 1000] } e então converta.
QComo ele difere de $dateFromString?
A$toDate detecta automaticamente formatos ISO; $dateFromString personaliza formato e fuso horário.