$month (Obter Mês)
Última atualização: 2026-10-09
$month (Obter Mês)
$month retorna o mês de uma data (1 a 12) — uma das expressões mais usadas para relatórios mensais. Combine com $year como chave do $group para construir uma dimensão de ano-mês. Retorna um inteiro sem zero à esquerda; use %m de $dateToString para uma string de dois dígitos. timezone define o limite do mês e tem UTC como padrão — sempre defina-o para relatórios mensais de negócios.
| Categoria | Data |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $month: { 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 mês (1-12); null se date for null.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $month + $year: totais de pedidos por mês
db.orders.aggregate([
{ $group: {
_id: { y: { $year: { date: '$orderDate' } }, m: { $month: { date: '$orderDate' } } },
total: { $sum: '$amount' }
} }
])
Saída:
{ "_id": { "y": 2026, "m": 9 }, "total": 45600 }
{ "_id": { "y": 2026, "m": 10 }, "total": 52300 }
📌 Notas
- Janeiro é 1, dezembro é 12
- Sempre combine mês com ano — o mês sozinho mistura anos
- O padrão é UTC — defina timezone explicitamente para relatórios mensais
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QEle retorna de 1 a 12?
ASim — janeiro é 1, dezembro é 12.
QComo gerar strings no estilo 2026-09?
AUse o formato %Y-%m de $dateToString ou combine $month com $year manualmente.
QPor que minhas estatísticas mensais estão deslocadas?
AGeralmente é um problema de fuso horário — passe um fuso local como Asia/Shanghai.