$dayOfMonth (Obter Dia do Mês)
Última atualização: 2026-10-09
$dayOfMonth (Obter Dia do Mês)
$dayOfMonth retorna o dia do mês de uma data (1 a 31) — uma expressão comum para estatísticas em nível de dia. Aceita uma expressão de data simples ou um objeto com um fuso horário explícito. Usos típicos: agrupar pedidos por dia, montar rótulos de dia ou detectar inícios de mês. Retorna um inteiro; o dia pode diferir entre fusos, então sempre defina timezone (o padrão é UTC).
| Categoria | Data |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $dayOfMonth: { date: <expressão de data>, timezone: <fuso horário> } }
⚙️ Parâmetros
| date | Obrigatório; a expressão de data. |
|---|---|
| timezone | Fuso horário opcional; o padrão é UTC. |
Retorno:O dia do mês (1-31) como inteiro; null se date for null.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $dayOfMonth: obter o dia do pedido (horário de Pequim)
db.orders.aggregate([
{ $project: {
day: { $dayOfMonth: { date: '$orderDate', timezone: 'Asia/Shanghai' } }
} }
])
Saída:
{ "_id": 1, "day": 25 }
{ "_id": 2, "day": 1 }
📌 Notas
- Inteiro de 1 a 31 sem zero à esquerda; use %d de $dateToString para dois dígitos
- Diferente de $dayOfWeek e $dayOfYear, este é o dia dentro do mês
- Data null ou ausente resulta em null
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é a diferença entre $dayOfMonth e %d?
A%d gera uma string de dois dígitos (05); $dayOfMonth gera um inteiro (5).
QComeça em 0 ou 1?
AComeça em 1 — o primeiro dia de um mês é 1.
QO fuso horário afeta o resultado?
ASim — UTC e fusos locais podem dar dias diferentes; defina timezone explicitamente.