$dateToParts (Dividir Data em Partes)
Última atualização: 2026-10-09
$dateToParts (Dividir Data em Partes)
$dateToParts divide uma data em um documento com year (ano), month (mês), day (dia), hour (hora), minute (minuto), second (segundo) e millisecond (milissegundo) — a inversa de $dateFromParts. Defina iso8601 como true para, em vez disso, obter isoWeekYear, isoWeek e isoDayOfWeek. Usos comuns: estatísticas agrupadas por ano/mês (como _id do $group) ou exportar datas como documentos legíveis. timezone conduz a divisão e tem UTC como padrão — sempre defina-o para relatórios entre fusos.
| Categoria | Data |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $dateToParts: { date: <expressão de data>, timezone: <fuso horário>, iso8601: <booleano> } }
⚙️ Parâmetros
| date | Obrigatório; a expressão de data a dividir. |
|---|---|
| timezone | Fuso horário opcional; o padrão é UTC. |
| iso8601 | Opcional; true gera campos do calendário de semana ISO. |
Retorno:Um documento com year/month/day/hour/minute/second/millisecond (ou campos ISO); null se date for null.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $dateToParts: dividir o horário do pedido em partes (horário de Pequim)
db.orders.aggregate([
{ $project: { parts: { $dateToParts: { date: '$createdAt', timezone: 'Asia/Shanghai' } } } }
])
Saída:
{ "_id": 1, "parts": { "year": 2026, "month": 9, "day": 25, "hour": 8, "minute": 30, "second": 0, "millisecond": 0 } }
📌 Notas
- As chaves são fixas: year, month, day, hour, minute, second, millisecond
- Com iso8601: true, as chaves se tornam isoWeekYear, isoWeek, isoDayOfWeek
- O padrão é UTC — sempre defina timezone para estatísticas entre fusos
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQuais são os nomes dos campos de saída?
AChaves fixas: year, month, day, hour, minute, second, millisecond.
QComo agrupar estatísticas por mês?
ADivida com $dateToParts e depois use $group com _id como uma combinação de ano/mês.
QO que iso8601 faz?
AQuando true, gera campos do calendário de semanas ISO para estatísticas baseadas em semanas.